Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firefox扩展:从侧边栏访问主文档_Javascript_Firefox Addon - Fatal编程技术网

Javascript Firefox扩展:从侧边栏访问主文档

Javascript Firefox扩展:从侧边栏访问主文档,javascript,firefox-addon,Javascript,Firefox Addon,我对编写Firefox扩展一无所知,我正在尝试创建一个边栏,在主文档中搜索某些元素,并在边栏中显示有关这些元素的信息。我按照说明创建侧栏,没有任何问题 我现在遇到的问题是访问sidebar.js文件中的主窗口或文档 医生说要用 var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfac

我对编写Firefox扩展一无所知,我正在尝试创建一个边栏,在主文档中搜索某些元素,并在边栏中显示有关这些元素的信息。我按照说明创建侧栏,没有任何问题

我现在遇到的问题是访问sidebar.js文件中的主窗口或文档

医生说要用

var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                   .getInterface(Components.interfaces.nsIWebNavigation)
                   .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
                   .rootTreeItem
                   .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                   .getInterface(Components.interfaces.nsIDOMWindow);
但这给了我一个错误:

TypeError:window.QueryInterface不是函数

我得到了警告:

Components对象已弃用。它很快就会被移除


这让我想到,即使上面的代码对我有效,它也不是最好的方法。

错误消息表明您的代码运行在不受权限的javascript上下文中
.QueryInterface()
是XPCOM代码,即访问仅对特权代码可用的内部浏览器组件

通常不建议将“叶内容”(由插件生成的窗口/侧栏)直接控制。相反,您的插件主代码应该协调各个视图。您的边栏应该是哑的,只需将消息传递给加载项代码,加载项就会修改选项卡的内容

由于浏览器的各个部分将来可能会在单独的进程中运行,并且彼此之间无法直接访问

如果您不是使用开发-设计时将消息传递作为将组件粘合在一起的主要方式-则必须使用将插件、侧边栏和内容脚本连接在一起。

如中所示使用:

我也使用了那个文档,我也得到了那个错误。文档太旧。

browser.tabs.create({url:“}) 行吗

browser.tabs.create({url:"https://www.google.com"});