我正在使用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
答案 0 :(得分:0)
可以提供更完整的示例,包括内容脚本吗?此代码将按原样失败(您不需要自身模块中的数据实用程序对象),并且您需要使用self.port监听通过worker.port.emit发送的事件的内容脚本.on在内容脚本中。有关这方面的更多信息:
https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts