javascript - Firefox 扩展 : Access to main document from sidebar

标签 javascript firefox-addon

我是编写 Firefox 扩展的新手,我正在尝试创建一个侧边栏,用于搜索主文档中的某些元素并在侧边栏中显示有关它们的信息。我按照说明 here可以毫无问题地创建侧边栏。

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

文档 here说用

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 is not a function

我收到警告:

The Components object is deprecated. It will soon be removed.

这让我觉得即使上面的代码对我有用,它也不是最好的方法。

最佳答案

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

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

由于 e10s浏览器的各个部分将来可能会在不同的进程中运行,并且不会相互直接访问。

如果您不使用 addon-sdk 进行开发- 它以消息传递作为将组件粘合在一起的主要方式设计 - 你将不得不使用 message manager将您的插件、侧边栏和内容脚本连接在一起。

关于javascript - Firefox 扩展 : Access to main document from sidebar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28596857/

相关文章:

javascript - 使用 jQuery 自制分享按钮

javascript - 未识别的排序算法

firefox - 如何检查 XUL 弹出元素而不使其消失?

sockets - 在 Firefox 附加组件中打开套接字连接

javascript - postman : How to assert all array elements exist in other array?

javascript - 如何查询 SVG 元素并获取其标题?

python - 无法使用 cfx run 运行我开发的 Firefox 插件

firefox - 使用 Firefox 29.0 显示 xdebug

javascript - 从 .js 库调用网页中的 Javascript 函数

c# - 如何制作 Firefox 附加组件