有没有一种方法可以获取仅属于我的扩展程序的选项卡ID?
有没有一种方法可以获取仅属于我的扩展程序的选项卡ID?
myTabs[i].location.reload()
出现错误:
Uncaught TypeError: Cannot call method 'reload' of undefined
但是这段代码:
chrome.tabs.executeScript(myTabs[i].id, {code:"document.location.reload(true);"});
可以使用方法来使其正常工作。但最好使用正确的方法:
chrome.tabs.reload(myTabs[i].id)
myTabs
。请注意,回答者(令人困惑地)对不同的集合使用相同的名称(myTabs
)。从 chrome.tabs.query
返回的 myTabs
返回一个 Tab 类型,它没有直接引用 window
对象。你的回答对于这种情况是正确的。在另一个答案的底部,myTabs
是一个 window
对象数组(从 chrome.extension.getViews
返回)。最后的代码片段仅适用于最后一个 myTabs
对象。 - Rob Wchrome.tabs.query({}, function (tabs) {
var myTabs = [];
for (var i = 0; i < tabs.length; i++) {
if (tabs[i].url.indexOf(chrome.extension.getURL('')) === 0) {
myTabs.push(tabs[i].id);
}
}
console.log(myTabs);
});
var myTabs = chrome.extension.getViews({type: 'tab'});
通过访问DOM,您可以简单地迭代每个视图(DOMWindow)并刷新每个页面。
for (var i = 0; i < myTabs.length; i++) {
myTabs[i].location.reload()
}
getViews
方法,因为它可以避免你包含tabs
权限。 - Mohamed Mansour我也曾尝试过使用chrome.tabs.query和chrome.tabs.get来实现同样的功能,但却无法奏效。以下方法完美解决了问题:
var data = chrome.extension.getViews({'type':'tab'});
$.each(data, function(k,v) {
v.window.location.reload();
});