2012-06-12 4 views
1

dom 레벨에서 mootools를 사용하여 요소를 클릭하는 방법을 알고있는 사람이 있습니까?dom 레벨 이벤트 트리거

foo.fireEvent('click') 예를 들어 mootools에 의해 화재 이벤트가 으로 추가되었지만이 특정 응용 프로그램에는별로 도움이되지 않습니다.

장난감 예제가있는 피들입니다. 상단 버튼을 클릭하면 두 이벤트 핸들러 기능이 모두 작동하지만 하단 버튼을 사용하여 클릭을 트리거하면 두 번째 기능이 실행되지 않습니다.

http://jsfiddle.net/Tc4Bv/

어떤 도움을 주시면 감사하겠습니다 - 감사합니다!

+0

이 이궁 ... 그것은 매우 당신이 다른 측면에서 무엇에 따라 달라집니다 - 그래서

는 이벤트 객체, 즉는 clientX/Y 등 부족, 기본이 될 수 있음을 염두에 두어야 mootools를 통해 추가 할 수있는 기존의 인라인 클릭 핸들러를 총알과 리팩터링에 사용합니다. 그들이 말한대로, 그것은 약간 [smelly] (http://en.wikipedia.org/wiki/Code_smell)을 보았습니다 –

+0

문제는 제가 제 3 자와 연결되어 있고, 원격 스크립트가 첨부되어 있으며 이벤트가 알 수없는 방법을 통해 페이지. 방아쇠를 당길 때 쓰는 코드라면 문제가되지 않을 것입니다. –

답변

1

최신 브라우저는 Element.click 방법을 사용할 수 있습니다, 그래서 당신은 같은 것을 시도 할 수 :

Element.implement({ 
    synteticClick: function() { 
     var click = 'click'; 
     (this[click] && !(this[click]())) || this.dispatchEvent(new Event(click)); 
     return this; 
    } 
}); 

http://jsfiddle.net/dimitar/LUPYK/

작품/최신 FF 테스트, IE7 모드에서 크롬, 또한 IE9와 IE9 (의 compat를). 내 경험, 더 나은이었다 -

+0

저는 실제로 이것을 실험하고있었습니다. 클릭 메소드가 링크 및 버튼과 같은 UI 요소에만 존재하는 것처럼 보입니다. 이미지가 아닙니다. –

+0

예 따라서 w3 사양에 따라 dispatchEvent를 통해 방법 2 –

+0

아 - 여전히 몇 가지 단점이 발생하지만 올바른 트랙에 배치됩니다. 감사합니다. –