Firefox WebExtension - chrome.tabs.query
Firefox WebExtension - chrome.tabs.query
当我这样做时:
var a = 'moz-extension://c5b86449-4457-4a39-a758-958faf23fc72/popup.html'
chrome.tabs.query({ url: a }, function(x){});
我收到一个错误:
Invalid match pattern: 'moz-extension://c5b86449-4457-4a39-a758-958faf23fc72/popup.html'
SingleMatchPattern() MatchPattern.jsm:49
this.MatchPattern() MatchPattern.jsm:103
self.tabs.query() ext-tabs.js:556
callAsyncFunction() Extension.jsm:422
inject/stub() Schemas.jsm:1002
但是,这是我需要在chrome.tabs.query
调用中匹配的 URL。
有什么建议吗?
在 Firefox v48 中,错误消息不再出现,但尚不支持moz-extension:...
协议。
如果像这样"url": "moz-extension:..."
搜索,chrome.tabs.query
x.length
中返回0
,请参阅示例:
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"
]
}
相关文章:
- 在chrome.tabs.onCreated之后加载HTML页面
- chrome.tabs.update() 重定向到 'chrome-extension://invalid/'
- 在javascript中接收来自mssql.query的变量
- Query JS Ext.data.Store
- Chrome扩展,Chrome.tabs.query的结果未定义
- 调用chrome.tabs.query后,结果不可用
- chrome.tabs.query:属性'currentWindow':想不到的
- Firefox WebExtension - chrome.tabs.query
- chrome.tabs.query status:loading -> exception?
- 在Chrome.tabs.Query中调用javascript函数
- 如果没有来自chrome.tabs.query的结果,请执行某些操作
- 将chrome.tabs.query放在函数中总是返回undefined
- chrome.tabs.query 未返回正确的选项卡
- 等待chrome.tabs.query回调的最佳方式
- chrome.tabs.getCurrent() or tabs.query()
- Chrome扩展:使Chrome.tabs.query()同步
- 在chrome.tabs.query中出现输入结束错误
- 在chrome.tabs.query中,url仍然未定义
- Chrome.tabs.query()导致浏览器崩溃
- chrome.tabs.query如何显示所有选项卡的信息?