3

インターバルを使用して更新することは可能ですか? 私が試してみました:

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 秒後にその単一のページを更新すると、アラート ボックス内で「hello world」が 3 回実行されます。一度だけ実行して、30秒ごとにミストルを更新したい。

4

1 に答える 1

3

contentScriptpage-mod を保存すると、プロパティを直接変更できます

最初に 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);
于 2013-01-22T20:59:22.363 に答える