Object.defineProperty() 在测试(jpm run)期间工作,但在使用实际 xpi 时不执行任何操作



好吧,我又回来了,有另一个关于插件部分的问题。

我使用一个观察者来修改通过javascript调用的值。

var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
observerService.addObserver(this, "document-element-inserted", false);

我是通过观察"插入文档元素"来做到这一点的,这就是

在创建文档的根元素后立即发送,但在执行任何脚本之前发送。(来源)

当被调用时,我的插件会修改几个文档/导航器/屏幕值,以通过覆盖导航器来减少指纹识别。X值:

Object.defineProperty(XPCNativeWrapper.unwrap(navigator), "plugins", {
    value: "",
});

在这种情况下,例如插件列表,使其看起来好像我根本没有安装任何插件。

到目前为止,这在我的开发环境/jpm运行中一直运行良好。然而,现在我已经创建了一个实际的xpi,什么也没发生。代码仍然会被调用,我在jSTracking函数中使用了几个控制台输出,所有这些都出现在浏览器控制台中。然而,所谓的改变的价值观仍然是原来的价值观。

只有两个错误在使用jpm运行时不会出现:

[异常…"组件返回的故障代码:0x80004005(NS_ERROR_failure)[nsIURI.hostPort]";nsresult:"0x80004005(NS_ERROR_FAILURE)";位置:";JS框架:resource://gre/modules/PopupNotifications.jsm::PopupNotifications_refreshPanel/<:线667";数据:否](未知)

在安装过程中被抛出两次。

不赞成在内容过程中使用nsIFile。Content.js:25:17

不赞成在内容过程中使用nsIFile。NetUtil.jsm:335:12

是另一个不时出现的,尽管从未与我的剧本有关。

最让我困惑的是:为什么Object.defineProperty可以与jpm一起运行,而不能与xpi一起运行?我必须改变什么才能让它始终有效?

整个项目可以在我的Github存储库中找到。

观测者的注册在第452行的pp.js中,

观察功能在436-446 行

jsTracking函数从193行开始,到433行结束

引用的插件示例可以在第399-403行中找到

如果有任何帮助,我将不胜感激,谢谢!

好吧,这比我想象的更容易"修复"。

当我随机浏览firefox主题时,我看到了e10s/firefox的多处理器功能,以及并非所有插件都兼容。

用我的标准firefox而不是夜间构建尝试了我的插件,一切都如预期的那样工作。

因此,我的问题得到了回答,我现在只需要担心e10的兼容性。

我想我会在bugzilla.mozilla.org上查找错误报告,看看这是我可以轻松修复的问题,还是他们可以添加到文档中的问题。

相关内容

  • 没有找到相关文章

最新更新