2013-10-31 45 views
0

我正在開發一個Firefox插件,我必須訪問書籤面板(看它去查看 - >邊欄 - >書籤),並添加一個菜單項到它的上下文菜單,當菜單項被點擊時,獲取項目它被點擊。如何在Firefox中使用javascript訪問書籤面板?

Por示例: 您打開書籤面板並右鍵單擊Most Visited項並單擊我的菜單項,然後我想知道單擊了Most Visited項。

我嘗試下面的代碼,但沒有成功:

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總是給我[對象xulElement],我怎麼能看到它是什麼元素?

我嘗試這樣做:

var sXML = new XMLSerializer().serializeToString(event.target); 

但似乎並沒有工作

感謝

+0

可以解決方案基於使用xul覆蓋?或者你需要用js來做到這一點? – Kashif

+0

需要使用javascript;它是一個插件。謝謝 – swe87

回答

0

我想改變

var bar = sidebarWindow.getElementById("placesContext"); 

var bar = sidebarWindow.document.getElementById("placesContext"); 

將有所作爲:-)

+0

你好,我會嘗試它,但我也嘗試與var sidebarWindow = document.getElementById(「sidebar」)。contentDocument;它不起作用。謝謝 – swe87

+0

確認,不這樣工作.... – swe87

相關問題