您好我已将我的网站设置为Chrome扩展程序。问题是我点击扩展程序图标的次数打开了很多标签。我需要当我点击扩展程序图标时我必须检查该标签已经打开了。如果它已经打开,那么只需显示该标签。否则创建另一个标签。我怎么能这样做?请帮助我。我知道这是一个简单的问题。但我无法弄明白。请发布。请帮我。 这是我的background.js
function getGmailUrl() {
return "http://calpinemate.com/";
}
function isGmailUrl(url) {
return url.indexOf(getGmailUrl()) == 0;
}
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.getAllInWindow(undefined, function(tabs) {
for (var i = 0, tab; tab = tabs[i]; i++) {
if (tab.url && isGmailUrl(tab.url)) {
console.log('Found Gmail tab: ' + tab.url + '. ' +
'Focusing and refreshing count...');
chrome.tabs.update(tab.id, {selected: true});
return;
}
}
console.log('Could not find Gmail tab. Creating one...');
chrome.tabs.create({url: getGmailUrl()});
});
});
我无法弄清问题是什么。请帮帮我
答案 0 :(得分:0)
问题是你的for循环中的条件搞砸了,所以它没有循环遍历所有标签。
BTW, chrome.tabs.getAllInWindow 已弃用。请改用 chrome.tabs.query (见下文)。
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.query({
url: "http://calpinemate.com/*",
currentWindow: true
}, function(tabs) {
if (tabs.length > 0) {
var tab = tabs[0];
console.log("Found (at least one) Gmail tab: " + tab.url);
console.log("Focusing and refreshing count...");
chrome.tabs.update(tab.id, { active: true });
} else {
console.log("Could not find Gmail tab. Creating one...");
chrome.tabs.create({ url: getGmailUrl() });
}
});
});