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