gpt4 book ai didi

javascript - Firefox 22 中的 NS_ERROR_XPC_BAD_OP_ON_WN_PROTO 异常

转载 作者:行者123 更新时间:2023-12-04 01:54:00 25 4
gpt4 key购买 nike

我维护一个似乎与 Firefox 22 有问题的插件。有一个使用 loadFrameScript 的 JavaScript 模块,它反过来使用 mozIJSSubScriptLoader 注入(inject)一些库。 loadFrameScript 引入的文件类似于以下内容:

// Create a JS sub-script loader.
var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
.getService(Components.interfaces.mozIJSSubScriptLoader);

// Create a context object.
var executionContext = Object.create(content);

// Load the libraries.
loader.loadSubScript("chrome://my-package/content/libs/jquery.js", executionContext);
loader.loadSubScript("chrome://my-package/content/logic.js", executionContext);

但是,加载 jQuery 的行为会抛出异常:

Error: NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: Illegal operation on WrappedNative prototype object Source File: chrome://my-package/content/libs/jquery.js Line: 829

看起来 jQuery 并没有在那行做任何疯狂的事情,只是调用了 setTimeout。谷歌搜索此消息,我在 Scriptish 中发现了类似的情况。扩展名,但没有解决方案。我不知道我应该做些什么不同的事情,或者哪些改变破坏了我在 Firefox 22 中加载 jQuery 的方式。有没有更好的方法来引入 jQuery?

更新

这确实是最严重的问题。我不再使用 executionContext 对象,因为我什至不记得我最初为什么使用它,而 jQuery 加载到内容中只是花花公子。

loader.loadSubScript("chrome://my-package/content/libs/jquery.js", content);
loader.loadSubScript("chrome://my-package/content/logic.js", content);

但是,现在其他也加载到 content 中的脚本无法使用 sendAsyncMessage。我想这是有道理的,因为它是一个没有插件 API 的全新范围​​,但现在我不确定如何读取页面 DOM。如何将我的逻辑和 jQuery 加载到 content 中并仍然保留 sendAsyncMessage 结果的能力?

最佳答案

只是我的两分钱 -

我还在维护一个遇到问题的扩展。对我来说,解决方案实际上与 scriptish 中指示的相同 - 使用 window.xxxx 而不是直接引用该方法。

比如之前有一行是直接调用setTimeout(),改成window.setTimeout()后,代码就可以了。

既然你说这条线除了调用 setTimeout 之外没有做任何事情,我想这是同一个问题。尝试添加窗口。在那个电话之前。

祝你好运!

关于javascript - Firefox 22 中的 NS_ERROR_XPC_BAD_OP_ON_WN_PROTO 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16846445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com