Firefox附加脚本多次执行

时间:2016-04-07 18:52:51

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

我想创建一个简单的插件来编辑某个页面上的iframe。

我看了the MDN add-on SDK tutorial,发现了一个tutorial,它解释了如何与页面进行交互,这里是 index.js

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

pageMod.PageMod({
  include: "http://www.kongregate.com/games/tfender/contract-wars",
  contentScriptFile: "./main.js"
});

这是 data / main.js ,contentScriptFile:

window.__cw_fullscreen_started = false;

if (!__cw_fullscreen_started) {
    console.log('started!');
    __cw_fullscreen_started = true;
}

最后一个教程有一个示例,展示如何使用pageMod,这里是:

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

pageMod.PageMod({
  include: "*.org",
  contentScript: 'document.body.innerHTML = ' +
                 ' "<h1>Page matches ruleset</h1>";'
});

这里的一切都很清楚:当我打开一些 .org 网站时,该脚本会用 <h1>Page matches ruleset</h1> 替换页面内容。似乎 document.body 链接到属于执行脚本的页面的文档正文。

但是当我执行jpm run并访问 http://www.kongregate.com/games/tfender/contract-wars 时,应该执行 main.js 脚本的页面,我看到了'start!'已多次登录。

我再次浏览MDN的所有教程,但我不知道为什么会这样。

所以问题:为什么脚本被执行了很多次?

PS:在similar question的回答中,一个人说“内容脚本将为从example.com加载的每个HTML文档只运行一次”,并说记录location.href将清除混乱,但是对我来说console.log(location.href, window.self == window.top)多次登出“www.example.com false”,所以混淆不清楚。

0 个答案:

没有答案