javascript - 迭代窗口对象的属性时出现异常 "Component is not available"

标签 javascript firefox firefox-addon firefox-addon-sdk window-object

我正在尝试使用 Addon SDK (Jetpack) 将 Google Chrome 扩展程序转换为 Firefox。以下代码(作为内容脚本运行)

var property, winProperties = {};
for (property in window) {
    winProperties[property] = true;
}

在 Firefox 5.0 和 6.0 中运行时抛出此异常:

Traceback (most recent call last):
File "sfc-bgcore.js", line 299, in null
File "resource://jid1-q4cqhvcl3sc4vq-at-jetpack-api-utils-lib/content/content-proxy.js", line 519, in null
for each (name in Object.keys(obj)) {
[Exception... "Component is not available"  nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: 
   resource://jid1-q4cqhvcl3sc4vq-at-jetpack-api-utils-lib/securable-module.js ->
   resource://jid1-q4cqhvcl3sc4vq-at-jetpack-api-utils-lib/content/content-proxy.js ::
   <TOP_LEVEL> :: 
   line 519"  data: no]

有谁知道如何捕获此异常或如何避免“有问题的”属性并继续循环?

请注意,我不能只在循环体中放置一个 try-catch 语句,因为即使这样也会触发错误:

for (var property in window) {};

但是,如果我在 Firefox 的“Web 控制台”中执行相同或相似的语句,那么它运行良好:

for (var property in window) { console.log(property); };

最佳答案

我无法用 a testcase extension 重现这个通过测试按钮安装它,然后访问 http://example.org/ - 有一些属性打印到控制台,然后是消息“完成”,没有错误。

测试用例代码:

exports.main = function(options, callbacks) {
    var pageMod = require("page-mod");
    pageMod.PageMod({
      include: "*.org",
      contentScript: 'for (property in window) {console.log(property)}; console.log("done");'
    });
};

关于javascript - 迭代窗口对象的属性时出现异常 "Component is not available",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7046886/

相关文章:

javascript - 更改特定 Firefox 选项卡的当前 URL

javascript - Firebase 函数,计算大数据的元素

javascript - 使用 if/then Javascript 输出 HTML?

css - 我的@media 打印不能在 Firefox 中正确显示?

javascript - 上下文菜单不工作 firefox 附加 WebExtensions

javascript - 消息 : SyntaxError: missing : after property id

javascript - 假设大多数用户将启用 JS 有多安全?

javascript - 为什么我的 jquery ajax post 成功但 $_POST 数组仍然为空?

Firefox SSL : you are connected to whatever. com 由(未知)运行?

javascript - 强制 HTTP 请求在浏览器中失败