0

내 Firefox 확장 프로그램 내에서 페이지로드 소스를 검색하고 싶습니다 (예 : 링크, 기록 항목 또는 책갈피를 클릭 한 후). 지금까지 나는 링크의 클릭을 감지하고 뒤로/앞으로 전달 버튼을 사용했습니다.기록 또는 북마크 항목에 대한 클릭을 감지하는 방법은 무엇입니까?

그러나 히스토리 라이브러리의 창에서 항목을 클릭하는 것 ("모든 기록 표시"를 클릭하면 팝업 됨)을 제외하고 히스토리 메뉴의 항목에 대한 클릭을 감지하지 못합니다. 북마크 메뉴 및 북마크 라이브러리 창과 동일한 문제가 발생합니다.

이 작업을 수행하는 데 다소 직접적인 방법이 있습니까? 북마크 메뉴의 경우 모든 북마크에 클릭 리스너를 추가 할 수 있습니다. 역사와 즐겨 찾기 항목에 대한

답변

1

모든 클릭 (모두 기본 브라우저 창을 별도의 창/사이드 바에서) 호출 PlacesUIUtils.openNodeWithEvent() 또는 PlacesUIUtils.openNodeIn() (상황에 맞는 메뉴에서 항목을 열 위치를 사용자가 명시 적으로 선택할 때 후자가 사용된다). 다음과 같은 접근 방식을 사용하여 이러한 기능을 확장 할 수 있습니다.

Components.utils.import("resource:///modules/PlacesUIUtils.jsm"); 
if (!("myExtensionHooked" in PlacesUIUtils.openNodeWithEvent)) 
{ 
    var origOpenNodeWithEvent = PlacesUIUtils.openNodeWithEvent; 
    PlacesUIUtils.openNodeWithEvent = function(node) 
    { 
    // Remember node.uri here - user chose this URL 
    ... 

    // Call original function 
    return origOpenNodeWithEvent.apply(this, arguments); 
    }; 
    PlacesUIUtils.openNodeWithEvent.myExtensionHooked = true; 
} 

다른 기능과 마찬가지로. 브라우저 세션마다 한 번만 수행해야합니다. PlacesUIUtils 개체가 모든 브라우저 창에서 공유됩니다. 이것이 예제 코드의 myExtensionHooked 속성의 용도입니다 (확장자에 고유 한 것으로 변경해야 함).

+0

안녕하세요 블라디미르! 답장을 보내 주셔서 감사 드리며 늦어서 답장을 보내 주셔서 감사합니다. 난 그냥 코드 조각을 시도하고 꽤 잘 작동하는 것. 나는 내가 원하는 곳이 아니지만, 당신의 제안은 나의 훨씬 더 가까워진다! – Christian

관련 문제