标签: firefox-addon-sdk

创建一个新的Firefox附加组件:XUL或Jetpack?

如果你要开始开发一个新的Firefox插件的今天,你还会使用XUL/JS或者你会开始使用Jetpack的,新的插件框架?

创建插件将继续在Firefox 4存在,但Jetpack的显然是建立蒸汽和我想象它会成为创造附加在未来的唯一途径的XUL方式.

现在是时候开始寻找切换/迁移到Jetpack了吗?

firefox firefox-addon firefox-addon-sdk

6
推荐指数
1
解决办法
1411
查看次数

Firefox:如何使用附加SDK(Jetpack)添加/修改工具栏

所以我现在多次查看Add-on SDK的文档,没有哪里可以看到如何创建工具栏或修改现有工具栏.他们有一个关于创建附加栏图标的教程,但这不是我想要的.附加SDK是否支持此功能?如果有,可以有人将我链接到示例/教程.

firefox toolbar firefox-addon firefox-addon-sdk

6
推荐指数
2
解决办法
3246
查看次数

从内容脚本onbeforeunload向附加组件发送消息?

我有一个内容脚本,用于计算用户查看页面的时间.为此,我将内容脚本注入每个页面,启动计时器,然后在onbeforeunload触发事件时将消息发送回加载项.

但是,消息似乎永远不会传递给后台脚本.

鉴于我main.js看起来像这样:

var pageMod = require('page-mod'),
    self = require("self");

pageMod.PageMod({
  include: "http://*",
  contentScriptFile: [self.data.url('jquery.min.js'),
                      self.data.url('content.js')],
  onAttach: function(worker) {
    worker.port.on('pageView', function(request) {
      console.log("Request received");
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

我可以main.js使用以下代码发送消息没问题.

self.port.emit('pageView', { visitTime: time });
Run Code Online (Sandbox Code Playgroud)

当我尝试按用户离开页面时遇到问题.当我这样做时,从未收到该消息:

$(window).bind('onbeforeunload', function(e) {
  self.port.emit('pageView', { visitTime: time });
  // This should prevent the user from seeing a dialog.
  return undefined;
});
Run Code Online (Sandbox Code Playgroud)

我也试过听beforeunload,但这也行不通.可能是什么问题呢?

javascript firefox firefox-addon dom-events firefox-addon-sdk

6
推荐指数
1
解决办法
821
查看次数

在Firefox Addon Page Script中加载JSON文件,包中的所有内容

我一直在使用Addon SDK开发一个Firefox扩展,需要加载一些存储在同一个包中的数据,作为一个单独的文件:"data.json".它需要从页面脚本加载,即使用脚本src标记包含在"panel.html"中的"loader.js".

结构是这样的:

+data
 panel.html
 panel.js
 loader.js
 data.json
 ...
+lib  
 main.js
 ...
Run Code Online (Sandbox Code Playgroud)

panel.html有:

<script type="text/javascript" src="loader.js"></script>
Run Code Online (Sandbox Code Playgroud)

最初我们将数据简单地存储到js文件中作为"data.js"并使用脚本src标签从"panel.html"中包含它并且它没有任何问题.但是,当我们向Mozilla Addon站点提交该附加组件时,这被解决为要解决的问题之一,并说我们需要使用非可执行格式,例如JSON文件,以使其更安全.

现在问题似乎是"loader.js"不允许向"data.json"发出AJAX请求.(使用JQuery $ .ajax()调用返回没有成功,给出错误代码0)所以我一直在考虑的解决方案是使用SDK的request()函数从"main.js"加载"data.json"并以某种方式将其传递给页面脚本"loader.js".但这似乎很复杂,因为据我所知,数据需要首先发送到内容脚本,然后从那里发送到页面脚本.这需要在加载页面脚本时发生!我对此感到困惑,因为我不确定我是否错过了一个更实用的解决方案,或者它是否真的像我想做的那样复杂,只需将包中的本地JSON数据加载到本地页面脚本中?

ajax firefox json firefox-addon firefox-addon-sdk

6
推荐指数
1
解决办法
1571
查看次数

在Firefox中注入CSS添加在sdk上

我没能在firefox扩展中注入CSS.这是我的代码.

var tbb = require('toolbarbutton').ToolbarButton({
  id: 'button',
  label: 'us-button',
  image: self.data.url('img/on.png'),
  onCommand: function () {

    tabs.activeTab.attach ({

        contentScriptFile: [
            self.data.url('jquery/jquery.min.js'),
            self.data.url('jquery/jquery-ui.js'),
            self.data.url('recuperation.js'),
            self.data.url('dialog.js')
      ],
      contentStyleFile: self.data.url('jquery/jquery-ui.css'),
Run Code Online (Sandbox Code Playgroud)

我使用Erik Vold的工具栏按钮.contentStyleFile似乎不起作用.当我单击按钮时,会出现JQuery对话框但没有css文件.

jquery jquery-ui firefox-addon-sdk

6
推荐指数
1
解决办法
1374
查看次数

将Chrome扩展程序移植到Firefox:相当于chrome.storage

我正在尝试将Chrome扩展程序移植到Firefox,我想知道什么是相同的,chrome.storage.local.set并且chrome.storage.local.get在Firefox中添加sdk.我想,是的simple-storage.

这是我的代码:

chrome.storage.local.set({'tokenFU': token});

[...]

chrome.storage.local.get('tokenFU',function(result){
                    token=result.tokenFU;
                    if(token && token != 'undefined'){
                        hideLog();
                    }
                    else 
                    showLog();
});
Run Code Online (Sandbox Code Playgroud)

提前致谢 !

javascript google-chrome firefox-addon google-chrome-extension firefox-addon-sdk

6
推荐指数
1
解决办法
1123
查看次数

Firefox扩展自定义字体

我正在使用Firefox Add-on SDK创建扩展程序并执行PageMod.这段代码在main.js.

...
exports.main = function() {
  var pageMod = require("sdk/page-mod");

  pageMod.PageMod({
    include: "*",
    contentScriptWhen: 'end',
    contentStyleFile: [
      self.data.url("css/style.css"),
      self.data.url("css/font-awesome.css")
    ],
    contentScriptFile: [
      self.data.url("js/jquery.js"),
      self.data.url("js/spritzify.js")
    ],
    onAttach: function onAttach(worker) {
      worker.postMessage("Hello World");
    }
  });
};
...
Run Code Online (Sandbox Code Playgroud)

css/font-awesome.css虽然字体文件没有,但我会加载到页面中.

@font-face {
  font-family: 'FontAwesome';
  src: url('fonts/fontawesome-webfont.eot?v=4.1.0');
  src: url('fonts/fontawesome-webfont.eot?#iefix&v=4.1.0') format('embedded-opentype'), url('fonts/fontawesome-webfont.woff?v=4.1.0') format('woff'), url('fonts/fontawesome-webfont.ttf?v=4.1.0') format('truetype'), url('fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)

fonts文件夹位于我的扩展程序的数据文件夹中.有人可以解释我如何使用PageMod将自定义字体加载到网页中!

javascript fonts firefox-addon firefox-addon-sdk

6
推荐指数
1
解决办法
2424
查看次数

Firefox附加sdk卸载钩子

我保留了一些用户数据simple-storage.当用户卸载加载项时,我想删除此用户数据.是否有某些事件或类似事件?

firefox firefox-addon firefox-addon-sdk

6
推荐指数
1
解决办法
351
查看次数

Firefox附加组件:将内容脚本注入iframe,src为"about:blank"

我们正在开发一个加载项,并希望将内容脚本注入首页和所有框架.但是我们发现内容脚本不能用src注入iframe作为"about:blank""javascript:...".

有什么意见/建议吗?

示例page-mod:

require("sdk/page-mod").PageMod({
            include:["*", "file://*"],
            contentScriptFile: [
                "./content/content.js",
            ],
            attachTo: ["existing","top", "frame"],...
Run Code Online (Sandbox Code Playgroud)

firefox firefox-addon firefox-addon-sdk

6
推荐指数
1
解决办法
796
查看次数

firefox插件更改响应代码

我有一个扩展,检查http-on-examine-response侦听器中的响应.在听众可以通过改变头的HTTPChannel,并通过nsITraceableChannel我们可以改变响应内容.

但是如何在http-on-examine-response监听器中更改响应代码(例如从407到200)?

一些代码:

const { Ci, Cu, Cc, Cr } = require('chrome');

Cu.import('resource://gre/modules/Services.jsm');

var observer = {
  observe: function(aSubject, aTopic, aData) {
    if (aTopic == 'http-on-examine-response') {
        console.log('we are in observer http-on-examine-response');
        var httpChannel = aSubject.QueryInterface(Ci.nsIHttpChannel);
        if(httpChannel.responseStatus == 407){
            httpChannel.responseStatus = 200; // <-- this is not working
        }
    }

  }
};

Services.obs.addObserver(observer, 'http-on-examine-response', false);


exports.onUnload = function (aData, aReason) {
  Services.obs.removeObserver(observer, 'http-on-examine-response');
};
Run Code Online (Sandbox Code Playgroud)

firefox firefox-addon firefox-addon-sdk

6
推荐指数
0
解决办法
404
查看次数