在 Firefox v48 中不再出现错误消息,但该moz-extension:...
协议尚不受支持。
chrome.tabs.query
如果像这样搜索返回0
,请参见示例:x.length
"url": "moz-extension:..."
chrome.tabs.query({ url: "moz-extension://..." }, function(x){
console.log(x.length);
});
但是有另一种方法可以解决这个问题,您可以通过没有“url:”参数的所有选项卡进行搜索,请参见以下示例:
获取标签数据:
function getTab(pageFromAddon, callback)
{
var uri = chrome.extension.getURL(pageFromAddon);
chrome.tabs.query({}, function(tabs) {
var tabData;
if (tabs && tabs.length) {
for (var i = tabs.length - 1; i >= 0; i--) {
if (tabs[i].url === uri) {
tabData = tabs[i];
break;
}
}
}
callback(tabData);
});
}
用法:
//get id, url, title and other info from tab (or false)
console.log(getTab("view/page.html"));
打开或刷新选项卡:
function openOrUpdateTab(pageFromAddon)
{
var uri = chrome.extension.getURL(url);
chrome.tabs.query({}, function(tabs) {
var tabId;
if (tabs && tabs.length) {
for (var i = tabs.length - 1; i >= 0; i--) {
if (tabs[i].url === uri) {
tabId = tabs[i].id;
break;
}
}
}
if (tabId) {
chrome.tabs.update(tabId, { "active": true });
} else {
chrome.tabs.create({ "url": uri });
}
});
return uri;
}
用法:
//If openned refresh tab, if not create new tab
var id = openOrUpdateTab("view/page.html");
//get url from new or refreshed tab
console.log(url);
重要的提示
要使用这些功能,您需要像这样添加"tabs"
到permissions:
( manifest.json
):
...
"permissions": [
"<all_urls>",
"tabs"
]
}