下面的代码在我打开新标签时有效,但是当我点击链接时它正在更新任何当前标签。
如何使用query
选择 新标签?
还有另一种方法吗?
/* Load Google when creates a new tab. */
function openMyPage() {
//console.log("injecting");
chrome.tabs.query({
'currentWindow': true,
'active': true
// This will match all tabs to the pattern we specified
}, function(tab) {
// Go through all tabs that match the URL pattern
for (var i = 0; i < tab.length; i++){
// Update those tabs to point to the new URL
chrome.tabs.update(
tab[i].id, {
'url': 'http://google.com'
}
);
}
});
};
//Add openMyPage() as a listener when new tabs are created
chrome.tabs.onCreated.addListener(openMyPage);
答案 0 :(得分:1)
tabs.onCreated
回调提供了一个Tab
对象的参数。你不应该查询它,你已经拥有它。
function openMyPage(tab) {
chrome.tabs.update(
tab.id, {
'url': 'http://google.com'
}
);
};
请注意,这会不加选择地定位新标签 - 即使用户通过新标签打开链接&#34;打开新标签页&#34;。如果这不是您想要的,那么您需要额外的逻辑来检测它是否是新标签页。
获得"tabs"
权限后,tab
对象将填充属性url
。您可以使用它来过滤新标签。在Chrome中,这应该是chrome://newtab/
,在Firefox中它应该是(我还没有经过测试)about:home
或about:newtab
。