2012-06-28 2 views
0

사용자가 웹 페이지의 아무 곳이나 마우스 오른쪽 버튼을 클릭 할 때 어떤 일을하고 싶다는 매우 간단한 Firefox 추가 기능을 작성하고 있습니다. 나는 그것을 작동 시키지만 이상하게도 firefox UI (툴바, 탭, urlbar 등)에서 모든 rightclick을 얻는다. 물론 그 사람들은 관심이 없습니다.문서에만 적용되는 firefox addon에서 rightclick 처리하기

document.addEventListener("contextmenu", function(e) { 
    // do stuff here 
}, true); 

처음에는이 수신기를 창에 꽂았지만 아무 것도 변경하지 않았습니다.

웹 사이트에서 마우스 오른쪽 버튼 클릭이 발생했을 때만 이벤트를 트리거 할 수있는 방법에 대한 힌트가 있습니까?

답변

2

브라우저 창 오버레이에서 코드를 실행하고있는 것 같습니다. 따라서 이벤트 수신기를 연결하는 document은 브라우저 창의 XUL 문서입니다. 필요한 모든 것이 브라우저의 이벤트라면 브라우저에 이벤트 리스너를 연결해야합니다. 브라우저뿐만 아니라 (알림 표시 줄) 일부 사용자 인터페이스를 가지고 있기 때문에 아직도 확실히 당신이 원하는 것을하지 않을 것이다하지만 이벤트 대상이 콘텐츠 문서 내부에 있는지 여부를 감지하는만큼 쉽게 :

gBrowser.addEventListener("contextmenu", function(e) { 
    if (e.target.ownerDocument.defaultView.top == window) 
     return; 

    // do stuff here 
}, true); 

이 사용 사실 window.top은 브라우저 내부의 윈도우 용 최상위 콘텐츠 창입니다. XUL 코드 경계를 넘을 수는 없습니다. 브라우저 UI 요소의 경우 실제로 실행되는 창은 실제 최상위 창을 얻게됩니다.

+0

감사합니다. –

관련 문제