注意:如果您开发跨浏览器扩展(希望您这样做!),我建议您使用chrome.tabs.query()
. 有关更多信息,请参阅Jean-Marc Amon 的回答。这个答案在 Firefox 和 Chrome 中仍然有效,但query()
更常用,有更多选项,并且适用于后台页面和弹出视图。
在chrome.tabs
API 中,您可以使用getCurrent()
、query()
或update()
。
现在,我更喜欢这样,update()
因为这允许您更新当前选项卡而无需做很多其他事情。
注意:您不能update()
从内容脚本中使用。
如果需要从内容脚本更新 url,那么您应该query
改用。Jean-Marc Amon 的回答提供了一个很好的例子,说明如何在这种情况下获得活动标签(不要忘记给他投票!)。
update()
let myNewUrl = `https://www.mipanga.com/Content/Submit?url=${encodeURIComponent(tab.url)}&title=${encodeURIComponent(tab.title)}`;
chrome.tabs.update(undefined, { url: myNewUrl });
在这里,我们将 update 的第一个参数设置为 undefined。这是您要更新的选项卡 ID。如果未定义,则 Chrome 将更新当前窗口中的当前选项卡。
请参阅Domino 的答案以获取更多信息,update
并注意这undefined
不是必需的。同样,如果您发现它有用,请不要忘记也为他们的答案投票。
getCurrent()
getCurrent
也不能从非选项卡上下文(例如背景页面或弹出视图)中调用。
拥有当前选项卡后,只需传递update()
.
chrome.tabs.getCurrent(function (tab) {
//Your code below...
let myNewUrl = `https://www.mipanga.com/Content/Submit?url=${encodeURIComponent(tab.url)}&title=${encodeURIComponent(tab.title)}`;
//Update the url here.
chrome.tabs.update(tab.id, { url: myNewUrl });
});
注意:为了使用此功能,您必须确保您在文件中启用了tabs
权限manifest.json
:
"permissions": [
"tabs"
],