我刚开始玩Mozilla Jetpack,到目前为止我喜欢它.我写了一个小代码,在状态栏中显示一个图标,点击后会显示一个通知:
var myTitle = 'Hello World!';
var line1 = 'I am the very model of a modern Major-General,';
var line2 = 'I\'ve information vegetable, animal, and mineral,';
var line3 = 'I know the kings of England, and I quote the fights historical,';
var line4 = 'From Marathon to Waterloo, in order categorical.';
var myBody = line1 + ' ' + line2 + ' ' + line3 + ' ' + line4;
var myIcon = 'http://www.stackoverflow.com/favicon.ico';
jetpack.statusBar.append({
html: …Run Code Online (Sandbox Code Playgroud) 我已经使用Add-on SDK API编写了大部分Firefox插件.我现在发现Add-on SDK可能不够强大,不适合我的目的.我需要两件事:
这确实令人失望,但我不相信Add-on SDK可以实现这些功能.
首先,我了解widgetAdd-on SDK API中有一个模块.但这只允许我在笨拙的附加栏上添加一个简单的图标或标签.如果我需要为Firebug或Greasemonkey的位置栏旁边添加一个更好的按钮怎么办?至于在firefox中修改附加组件管理器,我已经尝试使用附加SDK的Nickolay Ponomarev的XUL而没有任何成功.如果有人知道如何使这个工作,并指出我的方向是非常有用的(cfx init --template xul当我尝试时,常规SDK没有做任何事情)
我正在使用Add-on SDK.开发一个Firefox附加组件.我的扩展程序在使用SDK时工作正常,但是当我创建.xpi文件以手动将其添加到浏览器时,它不会显示扩展图标.
我试图更改package.json文件中的图标路径,但它仍然没有显示图标.
package.json文件:
{...
"icon" : "Phone-icon48.png",
"icon64" : "Phone-icon64.png",
...}
Run Code Online (Sandbox Code Playgroud)
窗口小部件面板用于显示图标:
WidgetPackage.Widget({
label: "Phone Dial",
id: "phone_dial",
contentURL: data.url("images/Phone-icon19.png"),
panel: panel_name
});
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?
谢谢.
我正在编写FireFox-Extension并希望从服务器加载数据.但是,当我尝试使用以下命令初始化XMLHttpRequest时:
var request = new XMLHttpRequest();
Run Code Online (Sandbox Code Playgroud)
错误控制台说:
ReferenceError: XMLHttpRequest is not defined
Run Code Online (Sandbox Code Playgroud)
我是否必须包含某些内容或为什么无法识别XMLTttpRequest?
我正在尝试创建一个FF AddOn,它可以从网站上获取一些XML数据.但我找不到解析我的回应的方法.首先我使用DOMParser但是我收到此错误:
ReferenceError:未定义DOMParser.
有人建议使用XMLHttpRequest,因为解析是自动完成的,但后来我得到了另一个错误:
错误:发生异常.回溯(最近一次调用最后一次):
文件"resource://jid0-a23vmnhgidl8wlymvolsst4ca98-at-jetpack/api-utils/lib/cuddlefish.js",第208行,在require let模块中,manifest = this.manifest [base], requirer = this.modules [base]; TypeError:this.manifest未定义
我真的不知道还能做什么.我必须注意,我正在使用AddOn Builder来实现这一目标.
下面的代码似乎不起作用.
选项1:
exports.main = function() {
require("widget").Widget({
id: "widgetID1",
label: "My Mozilla Widget",
contentURL: "http://www.mozilla.org/favicon.ico",
onClick: function(event) {
var Request = require("request").Request;
var goblecontent = Request({
url: "http://www.myexperiment.org/search.xml?query=goble",
onComplete: function (response) {
var parser = new DOMParser();
var xml = parser.parseFromString(response.text, "application/xml");
var packs = xml.getElementsByTagName("packs");
console.log(packs);
}
});
goblecontent.get();
}
});
};
Run Code Online (Sandbox Code Playgroud)
选项2:
exports.main = function() {
require("widget").Widget({
id: "widgetID1",
label: "My …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用addon-sdk将Chrome插件移植到Firefox,但我无法找到等效的方法来收听标签导航事件.
我需要做的是保持每页数据(从DOM检测到),并在用户导航到选项卡中的新页面时立即删除(但是,在刷新时保持数据)
我Chrome,当标签更改网址时执行某些操作,我可以使用:
chrome.tabs.onUpdated.addListener(function(tab_id, changeInfo, tab) {
if(changeInfo.status == 'loading' && changeInfo.url) {
//DO STUFF AS THE URL CHANGED
}
});
Run Code Online (Sandbox Code Playgroud)
在使用addon-sdk的Firefox中我试过使用:
tabs.on('open', function(tab){
tab.on('ready', function(tab){
if(tab.cachedURL != tab.url) {
//DO STUFF AND SET CACHE
}
});
});
Run Code Online (Sandbox Code Playgroud)
问题是我无法挂钩初始导航事件,因此在用户开始导航和准备好新页面的DOM之间,旧数据可用.
基本上我需要一种方法来勾选选项卡的初始导航,理想情况下看看它的位置(就像我在Chrome中一样).
有什么想法吗?
我一直在使用firefox附加组件很长一段时间,并且使用notpad ++进行开发是一个非常令人头痛的问题.是否有任何合适的IDE或插件可供eclipse使用.就像我们一样**运行在服务器上"用于动态网络项目,有没有办法,我在任何一个文件中做了更改,它会自动创建.xpi文件并安装在Firefox中?
发现清洁溶液
我找到了一个非常干净的解决方案,它真的让整个问题变得毫无意义,我确信当我提出这个问题时它就存在了......我也很无知也在寻找它.
attachTo: 'top'在PageMod构造函数中使用只将脚本附加到顶级文档而不是任何文档iframes.
因此,如果您发现PageMod附加内容多次附加,则可能是因为它iframes与顶级选项卡文档一起附加.添加attachTo: 'top'为传递给PageMod构造函数的对象的属性,您不必担心iframes.
对于下面的问题,解决方案将是
var _workers = [];
var pageMod = require("sdk/page-mod").PageMod({
include: /https?:\/\/www\.websitename\.net.*/,
contentScript: "self.port.on('hello', function() { " +
"console.log('['+document.location.href+']: " +
"My worker said hello to me!');",
contentScriptWhen: "end",
attachTo: 'top', //<-- add this property to only attach to top level document
onAttach: function(worker) {
_workers.push(worker);
worker.on("detach", function() {
var ind = _workers.indexOf(this);
if(ind !== -1) {
_workers.splice(ind, 1);
} …Run Code Online (Sandbox Code Playgroud) 我使用JPM在firefox插件上工作.
我想在我的Android手机上安装它,我运行"jpm xpi"并在我的SD卡上复制xpi.当我浏览到文件:// path/to/my/xpi在android firefox中没有任何事情发生.如果我在我的服务器上上传xpi并浏览到url,则会出现同样的问题.
我已经测试了google play firefox最新版本和nighty.
我的错在哪里?