2012-09-14 6 views
1

가능한 중복 :
In Jquery, how can I tell between a programatic and user click?
방지 자바 스크립트 생성 클릭

브라우저에 따라서는, 링크가 될 수있는 여러 가지 방법이 있습니다 자바 스크립트를 사용하여 "클릭".

element.click(); element.fireEvent ('click');

다른 브라우저 사용 EVT는 마우스 클릭 이벤트입니다

element.dispatchEvent (EVT).

실제 최종 사용자 작업이 특정 링크의 이벤트 작성자인지 확인하고 싶습니다. 지금 사용하는 기술은 이러한 메서드를 재정의하고 클릭 이벤트를 필터링하는 것이지만 메서드를 사용하기 전에 메서드를 프로토 타입 버전으로 되돌려 놓으면 쉽게 파기됩니다.

직접적인 사용자 작업 (실제로 요소를 클릭 함)의 결과로 클릭 이벤트가 발생하는지 여부를 결정하는 신뢰할 수있는 크로스 브라우저 방식이 있습니까?

+0

또한 mousedown 및 mouseup 이벤트와 다른 장치 관련 이벤트 (예 : 키 누르기)에 연결할 수 있습니다. –

+0

나는 또한 자바 스크립트에서 파견 될 수 있다고 믿는다. 맞습니까? –

+1

http://stackoverflow.com/questions/6674669/in-jquery-how-can-i-tell-between-a-programatic-and-user-click. 사이트에 액세스하여 다른 입력 장치를 사용하려면이 작업이 점점 복잡해지기를 바랍니다. –

답변

2

initUIEvent()으로 미리 정의되지 않은 경우 Chrome, Firefox 및 Opera에서 Event.detail 속성을 사용할 수 있습니다. IE9에서 두 경우 모두 (및 이전의 IE에서 전혀 작동하지 않습니다)에

element.addEventListener('click', clickHandler, false); 
function clickHandler (e) { 
    if(e.detail > 0) { 
     /* 1 = user click */ 
    } else { 
     /* 0 = JS click */ 
    } 
    return; 
} 

Unfortenately e.detail 반환 1. 이벤트 속성은 click 이벤트의 소스에도 불구하고 IE (IE < 9 포함, 모름 10)와 완전히 동일합니다.

+0

+1로 인해 나를 event.isTrusted로 안내했습니다. –