Firefox插件忽略了iframe

时间:2012-08-17 08:41:09

标签: javascript firefox-addon firefox-addon-sdk

我正在尝试为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,这个脚本仍然将脚本放在每一帧......

1 个答案:

答案 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

相关问题