即使注入代码,Firefox SDK page-mod onAttach事件也不会触发

时间:2014-01-26 20:53:32

标签: javascript firefox firefox-addon-sdk

我正在使用addon SDK 1.15开发一个firefox扩展,其中一部分应该将脚本注入http://linustechtips.com/ *。这是我的代码摘录:

var pageMod = require("sdk/page-mod");
var self = require("sdk/self");
var data = self.data;

pageMod.PageMod({
  include: "*.linustechtips.com",
  contentScriptFile: [data.url("linustechtips-injection.js")],
  contentScriptWhen:"ready",
  onAttach: function(worker){
    notificationQueue.push({title:"attached",text:"attached to ltt",});
    worker.port.emit("dataUrl",data.url());
  },
});

,内容脚本包含:

var dataUrl="";
self.port.on("dataUrl",function(data){dataUrl=data;setTimeout(function(){console.log(dataUrl);},5000)});
console.log("injected");

var $jq = jQuery.noConflict(); //jquery was conflicting and causing issues

接下来是一些代码,但它运行了,如果它是insde的self.port.on(...)代码,它永远不会运行(self.port.on(..)永远不会被调用,因为从来没有打过onAttach。

但是当脚本按照它应该注入时(事实上,它似乎由于某种原因运行了两次),onAttach代码永远不会被调用(它应该显示桌面通知并发出data.url()。)< / p>

firefox控制台没有记录任何错误。

我用来测试的网站的网址是http://linustechtips.com

1 个答案:

答案 0 :(得分:0)

可以提供更完整的示例,包括内容脚本吗?此代码将按原样失败(您不需要自身模块中的数据实用程序对象),并且您需要使用self.port监听通过worker.port.emit发送的事件的内容脚本.on在内容脚本中。有关这方面的更多信息:

https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts