Firefox附加组件:cfx-run运行良好,cfx-xpi运行良好,但附加组件没有任何作用
Firefox add-ons: cfx run works great, cfx xpi works but the add-on does nothing
我一直在开发一个Firefox扩展(基本上只是一个"内容脚本"或"页面模块",无论哪个术语对你有用),当我使用"cfx-run"时,它的工作原理与预期完全一样,但当我使用了"cfx-xpi"并安装它时,什么都没有发生。在cfx运行中,我的内容脚本运行得很好,在命令提示符下没有任何错误。如果这有任何帮助的话,当我退出测试运行时,我确实看到了一个错误:
###!!! [Child][DispatchAsyncMessage] Error: (msgtype=0xAA0001,name=PTexture::Msg
___delete__) Route error: message sent to unknown actor ID
但这看起来与JavaScript错误不同(对我来说,这看起来更像是"内部"错误,也许是SDK的问题?)。不管怎样,当我执行cfx-xpi(带或不带"--no-strip-xpi"选项)所有似乎都很好。控制台没有错误,安装看起来也很好),但当我转到我正在为其编写脚本的页面时,什么都没有发生。页面像往常一样加载,但内容脚本什么都没做;页面没有更改,没有错误,实际上只是没有任何功能提示。
所以我当然花了一些时间在谷歌和这个网站上。我发现了几个稍微相似的问题,但要么不相关,要么没有答案。以下是其中的一些:创建xpi不起作用(这是mac与Windows的问题)使用插件SDK创建XPI包?(这个有点接近,但我在main.js中没有使用contentScript,而是像那个家伙建议的那样使用了PageMod对象)Firefox SDK示例加载项导出的XPI操作按钮没有';t显示(我的控制台没有显示任何错误,所以这个也没有帮助)。
当然,我尝试了所有显而易见的东西(重新启动Firefox、重新启动计算机、更改脚本内容等),结果仍然是一样的:在cfx运行中很好,编译和安装很好,但在cfx-xpi之后什么都不做。
此外,如果这对你们有帮助,这里是我的main.js:
var data = require("sdk/self").data;
var pageMod = require("sdk/page-mod");
pageMod.PageMod({
include: "*.somepage.com",
// NOTE TO SELF: include all object files here.
contentScriptFile: [data.url("Data.js"), data.url("Layout.js"), data.url("HTML.js"), data.url("Restyler.js"), data.url("Shortcut.js"), data.url("ARIA.js"), data.url("Apricot.js")]
});
这与我在文档和教程中所读到的内容非常相似,但无论出于什么原因,它仍然只能在cfx运行中工作。因此,不幸的是,我真正能肯定地告诉你的是,某个地方正在以某种方式阻止、覆盖或以其他方式阻止XPI做它的事情(神秘?当然。沮丧?你不知道…):))
很抱歉,我不知道还能说什么,哈哈。我知道JavaScript(和许多其他语言),但这是我第一次尝试使用SDK(这似乎比它的价值更麻烦)。天哪,我希望他们能更新GreaseMonkey编译器,或者至少带回插件生成器。。。哦,我大声说出来了吗?:)
不过,抛开玩笑不谈,任何潜在的解决方案、变通方法或其他见解都将不胜感激。谢谢
您在Firefox设置中使用私人浏览吗?如果是,那么您需要添加
"permissions": {"private-browsing": true}
到package.json文件。
更多信息:https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/private-browsing#Opting_into_private_browsing
- 具有大型数据集的组件仅在 IE11/Edge 上运行缓慢
- 过早运行的角度组件/指令的$postLink
- 是否可以从 Firefox 运行 bash 脚本?(使用 Firefox 附加组件 SDK)
- Firefox附加组件:cfx-run运行良好,cfx-xpi运行良好,但附加组件没有任何作用
- VueJS组件来运行一个MelonJS游戏
- IE11 运行时错误: 429 ActiveX 组件无法创建对象
- 将对象从Javascript传递到基于C++/CX接口的C++/CX-Windows运行时组件
- 在“运行时”从外部脚本加载React JS组件
- 组件对话框无法在IE中运行(无法获取属性'clear'未定义或空引用)
- 淘汰嵌套组件:$(document).ready() ..在加载嵌套组件之前运行
- React-Native:加载组件时在后台运行一个函数
- 同一页面上的多个KnockoutJs组件单独运行
- 在Vue.js中使用仅运行时构建的组件使用vuify
- React native:始终运行的组件
- Angular2在运行时将AppModule中的服务注入到依赖的ngmodule的组件中
- 如何从JavaScript传递对象到Windows运行时组件c#
- 在ExtJS中检索运行时组件维度
- 我只能在使用Angular2 Universal的客户端中运行组件方法吗
- Vue.js 路由器:在组件准备就绪时运行代码
- 在运行时添加ExtJS组件-“刷新视图”