我正在尝试为LinkedIn构建一个插件,但内容脚本在每一帧都输出......
我的main.js:
exports.main = function() {
var pageMod = require("page-mod");
pageMod.PageMod({
include: "http://www.linkedin.com/*",
contentScriptWhen: 'ready',
contentScript: 'alert("test")'
});
};
通过检查框架元素,如果它是顶部框架,我可以做一个动作
if(window.frameElement === null){ alert("YEAH this is the right place!); }
但是我的内容srcipt很复杂并且使用了jquery,这个脚本仍然将脚本放在每一帧......
答案 0 :(得分:3)
UPDATE,SDK的page-mod api现在支持'attachTo',所以你可以这样做:
var data = require("sdk/self").data;
var page = require('sdk/page-mod');
page.PageMod({
match:['*'],
contentScriptOptions: {},
contentScriptFile: [data.url('myScript.js')],
attachTo: 'top',
onAttach: function(worker) {
//set up hooks or other background behavior
},
});
请参阅this more recent question for more info。
您可以研究两种方法:
<德尔> 1。使用选项卡模块附加内容脚本。这是因为标签模块只处理顶级文档。这是一个简单的例子:
<德尔> https://builder.addons.mozilla.org/package/22176/latest/ 德尔>
<德尔> 2。通过page-mod初始加载一个非常小的内容脚本,然后如果该页面是你真正想要修改的东西,则通过port.emit消息发送脚本来注入脚本。 dotjs附加组件有一个这种方案的例子:
<德尔> https://github.com/rlr/dotjs-addon 德尔>