Как обновить/обновить 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 раза «привет, мир» внутри окна предупреждения. Я хочу, чтобы он выполнялся только один раз и обновлял mystle каждые 30 секунд.


person Gorden Gram    schedule 06.10.2012    source источник


Ответы (1)


Вы можете напрямую изменить свойство contentScript, если сохраните мод страницы.

Сначала создайте мод страницы и сохраните объект в переменной, например mod ниже. Затем на вашем интервале вы можете изменить свойство contentScript, как вы видите в файле func2. После того, как вы изменили contentScript, вам понадобится модификация страницы, чтобы каким-то образом переоценить страницу, я использовал перезагрузку страницы, так как это звучало так, как из вашего описания, которое уже происходило.

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);
person Bryan Clark    schedule 22.01.2013