好吧,我又回来了,有另一个关于插件部分的问题。
我使用一个观察者来修改通过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上查找错误报告,看看这是我可以轻松修复的问题,还是他们可以添加到文档中的问题。