如何刷新/更新页面添加内容脚本?

时间:2012-10-06 09:45:43

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

是否可以使用间隔更新它?我试过了:

var timers = require("timers");
var pageMod = require("page-mod");
var mystyle = ....;

function func1(){
pageMod.PageMod({
  include: "*.org",
  contentScript: mystyle
});
}
func1();

function func2(){
   mysyle = http://......
}

timers.setInterval(func2,10000);

问题是它会每隔一段时间开始注册pageMod几次。 假设我有mystyle:alert(“你好世界”);所以我会去一些页面,30秒后,当我刷新那个单页时,它会在警告框内执行3次“hello world”。我希望它只执行一次并每30个seoncds更新一次mystle。

1 个答案:

答案 0 :(得分:3)

如果您保存page-mod

,则可以直接更改contentScript属性

首先创建你的page-mod并将对象保存在一个变量中,如下面的mod。然后,在您的间隔内,您可以像contentScript中看到的那样更改func2属性。一旦你改变了contentScript,你就需要使用page-mod以某种方式重新评估页面,我使用了页面重新加载,因为它听起来就像你已经发生的描述一样。

var mod = require("page-mod").PageMod({
  include: ["*.org"],
  contentScript: "alert('the first alert');"
});

function func2(){
  // change the contentScript
  mod.contentScript = "alert('the second alert');";
  // cause the page-mod to re-evaluate
  require("tabs").activeTab.reload();
}

tab = require("tabs").open("http://mozilla.org");
require("timers").setInterval(func2, 5 * 1000);