2013-10-31 32 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

相关问题