长时间不访问页面时内容脚本卸载
Content script unloads when page is not visited for a long time
我正在开发一个需要持续 运行ning 的浏览器扩展,即使在后台自动刷新之后也是如此。问题是,页面随机自动卸载并且脚本刚刚关闭。我需要找到一种方法来始终保持内容脚本打开。这是代码的一部分:
// content.js:
function run(fn) {
if(typeof(Worker) !== "undefined") {
if(typeof(w) == "undefined") {
w = new Worker(URL.createObjectURL(new Blob(['('+fn+')()'])));
}
w.onmessage = function(event) {
if (isNaN(grabbedmin) && ID) {
bump() // Note: the bump function refreshes in the page.
w.terminate();
}
if ($("[href='/server/bump/" + ID + "']").text().includes("Bump")) {
bump()
w.terminate();
}
document.getElementById("bumpcount").innerHTML = "Autobumper Enabled: " + getCurrentTimestamp();
if (numberwow == grabbedmin) {
bump()
w.terminate();
}
};
}
}
上面的代码基本上是由这个工人每分钟得到运行:
// content.js:
const worker = run(function() {
var i = 0;
function timedCount() {
i = i + 1;
postMessage(i);
setTimeout(function(){timedCount()},1000);
}
timedCount();
});
有没有一种方法可以让 background.js 检测到 content.js 没有 运行ning(或者页面已卸载),然后重新加载它?
注意:您可以在此处找到脚本:https://github.com/Theblockbuster1/disboard-auto-bump
在浏览 docs 并查看示例后,我将其放在一起:
chrome.tabs.query({
url: ["*://disboard.org/*dashboard/servers", "*://disboard.org/*dashboard/servers/"] // finds matching tabs
}, function(tabs) {
tabs.forEach(tab => {
chrome.tabs.update(tab.id,{autoDiscardable:false});
});
});
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
// checks if the browser automatically re-enabled autoDiscarding and disables it
if (changeInfo.autoDiscardable == true) chrome.tabs.update(tabId,{autoDiscardable:false});
});
我正在开发一个需要持续 运行ning 的浏览器扩展,即使在后台自动刷新之后也是如此。问题是,页面随机自动卸载并且脚本刚刚关闭。我需要找到一种方法来始终保持内容脚本打开。这是代码的一部分:
// content.js:
function run(fn) {
if(typeof(Worker) !== "undefined") {
if(typeof(w) == "undefined") {
w = new Worker(URL.createObjectURL(new Blob(['('+fn+')()'])));
}
w.onmessage = function(event) {
if (isNaN(grabbedmin) && ID) {
bump() // Note: the bump function refreshes in the page.
w.terminate();
}
if ($("[href='/server/bump/" + ID + "']").text().includes("Bump")) {
bump()
w.terminate();
}
document.getElementById("bumpcount").innerHTML = "Autobumper Enabled: " + getCurrentTimestamp();
if (numberwow == grabbedmin) {
bump()
w.terminate();
}
};
}
}
上面的代码基本上是由这个工人每分钟得到运行:
// content.js:
const worker = run(function() {
var i = 0;
function timedCount() {
i = i + 1;
postMessage(i);
setTimeout(function(){timedCount()},1000);
}
timedCount();
});
有没有一种方法可以让 background.js 检测到 content.js 没有 运行ning(或者页面已卸载),然后重新加载它?
注意:您可以在此处找到脚本:https://github.com/Theblockbuster1/disboard-auto-bump
在浏览 docs 并查看示例后,我将其放在一起:
chrome.tabs.query({
url: ["*://disboard.org/*dashboard/servers", "*://disboard.org/*dashboard/servers/"] // finds matching tabs
}, function(tabs) {
tabs.forEach(tab => {
chrome.tabs.update(tab.id,{autoDiscardable:false});
});
});
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
// checks if the browser automatically re-enabled autoDiscarding and disables it
if (changeInfo.autoDiscardable == true) chrome.tabs.update(tabId,{autoDiscardable:false});
});