我有代码后台js:
chrome.contextMenus.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {
code: "setInterval(function(){alert('test')}, 2000)"
});
});
var id = chrome.contextMenus.create({
"title": "Auto Refresh",
"contexts": ["page"]
});
它有效,每 2 秒它就会出现一个警报框“test”;
但我用 location.reload 替换了alert('test'):
chrome.contextMenus.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {
code: "setInterval(function(){location.reload()}, 2000)"
});
});
var id = chrome.contextMenus.create({
"title": "Auto Refresh",
"contexts": ["page"]
});
第一次只有1次刷新,不再继续刷新。请帮助我,谢谢
最佳答案
刷新页面时,setInterval
句柄将会消失,因此它不会按您的预期工作。
解决方案是在扩展程序中执行 setInterval
:
chrome.contextMenus.onClicked.addListener(function(tab) {
setInterval(function() {
chrome.tabs.executeScript(tab.id, {
code: "location.reload()"
});
}, 2000);
});
var id = chrome.contextMenus.create({
"title": "Auto Refresh",
"contexts": ["page"]
});
由于我承认您只想刷新当前页面,因此我将 tab.index
添加为 chrome.tabs.executeScript
的第一个参数,以便仅刷新当前页面页面正在刷新。
请注意用户可能会多次选择该选项,因此您可能需要检查是否是这种情况或删除上下文菜单项。另外,当选项卡关闭时,您需要调用clearInterval
,否则会导致很多问题。这些留给你练习。
关于javascript - setInterval 重新加载页面谷歌浏览器扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12995696/