chrome拡張で、それぞれのタブに対して個別に操作をしたい。

実現したいこと

chrome拡張で、タブを一定秒数リロードし続ける拡張機能を作っています。(実装はedge)
popup.jsからbachground.jsにリロードする秒数やそのタブのid、リロードのスタート/ストップのフラグを送り、background.jsで一定秒数ごとにリロードさせるchrome apiの機能をリロードしたいタブのcontent-sctript.jsに送る形です。
タブごとに個別にリロード、そしてそれをストップさせたいです。

発生している問題・分からないこと

それぞれのタブを個別にリロードさせることはできているのですが、ストップをさせようとすると、現在見ているタブ以外のすべてのリロードがストップしてしまいます。
現在見ているタブのみをリセットさせるようにしたいです。
そして、現在のコードでも複数のタブを個別にリロードすることを実装できているのですが、setIntervalが1つだけなのになぜ実装できたのがも知りたいです。

該当のソースコード

popup.html

popup.js

background.js

1chrome.runtime.onMessage.addListener(function (request) { 2 if (request.message == 'startreload') { 3 chrome.storage.local.get(['time', 'locate']).then((result) => { 4 const timer = result.time; 5 const tab = result.locate; 6 let paused = false 7 const timerID = setInterval(function () { 8 if (paused) { 9 clearInterval(timerID); 10 chrome.tabs.sendMessage(tab,{text : "stop"}); 11 return; 12 }; 13 chrome.tabs.sendMessage(tab,{text : "loading"}); 14 chrome.tabs.reload(tab); 15 }, timer); 16 chrome.runtime.onMessage.addListener(function (request) { 17 if (request.message == 'stopreload') { 18 paused = true; 19 }; 20 }); 21 }); 22 }; 23});

content

1chrome.runtime.onMessage.addListener(function (request) { 2 console.log(request.text); 3});

試したこと・調べたこと

上記の詳細・結果

setIntervalをタブごとに個別に立てられればと思いましたが、その方法がわかりませんでした。

補足

特になし

コメントを投稿

0 コメント