我有代码背景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')。
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
,否则您将造成很多问题。这些留给您练习。
@alvin,
基于您的答案,我找到了解决方案:
chrome.contextMenus.onClicked.addListener(function(tab) {
var tabID;
chrome.tabs.getSelected(null, function(tab) {
tabID = tab.id;
});
setInterval(function() {
chrome.tabs.executeScript(tabID, {
code: "location.reload()"
});
}, 2000);
});
var id = chrome.contextMenus.create({
"title": "Auto Refresh",
"contexts": ["page"]
});
我添加了chrome.tabs.getsected以保存tab.id,此解决方案很满意:d