编程语言
首页 > 编程语言> > javascript-如何刷新/更新pageMod contentScript?

javascript-如何刷新/更新pageMod contentScript?

作者:互联网

是否可以使用间隔更新它?我努力了:

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(“ hello world”);因此,我将转到某个页面,在刷新该页面30秒后,它将在警报框中执行3次“ hello world”.我希望它仅执行一次,并每30秒更新一次更新.

解决方法:

如果保存page-mod,则可以直接更改contentScript属性.

首先创建您的page-mod并将对象保存在变量中,例如下面的mod.然后,您可以按时间间隔更改func2中看到的contentScript属性.更改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);

标签:content-script,firefox-addon,firefox-addon-sdk,javascript
来源: https://codeday.me/bug/20191127/2075021.html