我有一个Firefox附加组件,这是一个基于覆盖的扩展,在Firefox版本中最多可以使用31个版本。但是它不适用于32版及更高版本。我通常使用Userscript Compiler工具来构建我的扩展程序。我在扩展程序的控制台中看不到任何内容(错误/输出)。
虽然当我使用Greasemonkey插件运行我的脚本时,它工作正常。问题是在将其扩展为XPI文件后运行扩展。
以下是我的扩展结构:
myextension
|-->skin
|-->classic
|-->content
|-->myscript.user.js
|-->myscriptPrefman.js
|-->myscriptScript-compiler.js
|-->myscriptXmlhttprequester.js
|-->script-compiler-overlay.xul
|-->chrome
|-->install.rdf
|-->icon.png
|-->chrome.manifest
以下是install.rdf
文件内容:
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>{9ef9b86c-03da-4e10-9552-e97a6d258af5}</em:id>
<em:name>Sample Extension</em:name>
<em:version>2.6</em:version>
<em:description>A sample extension - Firefox</em:description>
<em:creator>Mozdev</em:creator>
<em:contributor>Greasemonkey Compiler by Anthony Lieuallen;</em:contributor>
<em:contributor>http://arantius.com/</em:contributor>
<em:homepageURL>www.example.com</em:homepageURL>
<em:targetApplication><Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>2.0</em:minVersion>
<em:maxVersion>35.*</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
chrome.manifest
内容:
content myextension content/
overlay chrome://browser/content/browser.xul chrome://myextension/content/script-compiler-overlay.xul
skin myextension classic/1.0 skin/classic/
我是否需要更改扩展中的任何内容或将其转换为Bootstrap扩展或使用附加SDK来构建XPI文件?
我已关注the Add-on SDK method suggested by Wladimir并创建了一个XPI安装程序文件。但是用户脚本没有在页面内运行 代码仍然从Greasemonkey加载项运行。
This is the Greasemonkey script在Greasemonkey中运行良好,但在通过编译器和SDK进入扩展时都没有。
我在本地计算机上关注了steps to install附加SDK。我使用cfx
命令来构建XPI文件。我在Firefox最新版本(ver.33.0.2)中安装它并访问openuserjs.org我看不到任何东西。那是为什么?
答案 0 :(得分:0)
我只是通过使用Firefox Request Api for GM_XmlhttpRequest和本地存储来复制代码,以便在本地存储信息。并使用Message Passing使脚本与main.js通信,Message Passing是Restartless Firefox Addon SDK Api的主干。
var data = require("self").data;
var pageMod = require("page-mod");
pageMod.PageMod({
include: "*.example.com", //mywebsite url
contentScriptWhen: 'start',
contentScriptFile: data.url("contentScript.js")
});
contentScriptFile是您希望在最新的Firefox AddonSDK API中使用端口消息编写用户脚本并与main.js通信的位置。
我使用Request API从服务器获取信息,而不是使用不受支持的GM_xmlhttpRequest。
var Request = require("sdk/request").Request;
var userDetails = Request({
url: "http://example.com/user/1",
onComplete: function (response) {
var res = response.json[0];
}
});
现在,扩展程序无法重新启动,并使用Firefox文档中的高级别和低级别api进行完全重写。希望未来的浏览器更改将使用这些api,并支持扩展更长的时间。