私はFirefoxアドオンを開発しており、ブックマークパネルにアクセスして(View-> Sidebar-> Bookmarksに移動することを確認するために)、コンテキストメニューにメニュー項目を追加し、メニュー項目がクリックされたときに項目を取得する必要がありますクリックしました。
例: ブックマーク パネルを開き、最も訪問された項目を右クリックして、メニュー項目をクリックすると、最も訪問された項目がクリックされたことを知りたいとします。
次のコードを試しましたが、成功しませんでした:
var bookmarkMenu = document.getElementById('menu_bookmarksSidebar');
var observer = document.createElement('observes'); //Observe when the bookmark panel shows
observer.setAttribute('element','viewBookmarksSidebar');
observer.setAttribute('attribute','checked');
observer.addEventListener('broadcast',function(event){
console.log("Bookmark panel showing " + event.target);
var sidebarWindow = document.getElementById("sidebar").contentWindow;//Try to get the sidebar window
if(sidebarWindow == null){
console.log("NULL");
}
var bar = sidebarWindow.getElementById("placesContext");
if (bar == null){
console.log("NO Sidebar window");
}
});
bookmarkMenu.appendChild(observer);
ブラウザ ウィンドウにアクセスする方法はわかっていますが、サイドバー ウィンドウにアクセスできません。bookmarkPanel.xul によると、そのパネルのコンテキスト メニューの ID は "placeContext" ですが、アクセスできません。右クリックしたブックマーク/要素にアクセスするにはどうすればよいですか?
event.target は常に [object xulElement] を提供しますが、それがどの要素であるかを確認するにはどうすればよいですか?
私はこれを試しました:
var sXML = new XMLSerializer().serializeToString(event.target);
しかし、うまくいかないようです
ありがとう