티스토리 뷰


기본적으로 제공되는 마우스 click 이벤트로는 해결이 불가능하다. 마우스 더블클릭 이벤트가 끝날 때까지 클릭 이벤트가 기다려 주지 않기 때문인데 이것을 스크립트에서 강제로 기다리게 해서 해결 할 수가 있다.

<script>
 
 function click_event(obj)
 {
    alert('onclick function ');
    return true;
 }
 
 function myOnClick(obj)
 {
  var is = true;
  var iTimeout = 500; //500/1000 초 이 값을 조절하면 더블클릭까지 기다릴 시간을 조정할 수 있음
  eval("obj._fnOnClick = function () { return(click_event(obj)) }");
  obj._timeoutid = window.setTimeout(obj._fnOnClick, iTimeout , "JavaScript");
  return is;
 }
 
 function myOnDblClick(obj)
 {
  var is= true;
  
  if(obj != null) {
   
   if( typeof(obj._timeoutid ) != 'undefined') {
    window.clearTimeout(obj._intTimerId);
    obj._timeoutid = null;
    obj._fnOnClick = null;
   }
  
   alert('ondblclick function');

   is= false;
  }
  
  return is;
 }
 
</script>

<span onclick="return myOnClick(this);" ondblclick="return myOnDblClick(this);" >span tag</span>


근데 이 방법도 확실한 방법은 아니다.
더블클릭하는 시간을 잘 조절하다보면 cleartimeout 하기 전에 click 이벤트가 실행되어 버리는 경우가 있다. 그렇다고 무턱대고 timeout 시간을 길게 가져가면 클릭시 호출될 함수가 늦게 호출되어서 답답한 기분이 들 수 있다.

가장 좋은 것은 하나를 다른 곳으로 빼는 것인데 그렇게 하기 힘들다면 이 방법도 활용해 볼 만 하다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday