如何关闭当前的扩展选项卡?

xx5*_*5tt 18 google-chrome-extension

我正在尝试关闭扩展程序的"选项"页面.我有一个取消按钮,我正在使用此代码:

chrome.tabs.getCurrent(null, function(tab) {
  chrome.tabs.remove(tab.id, function() {});
});
Run Code Online (Sandbox Code Playgroud)

当我尝试使用它时,它总是会出现此错误:

Uncaught TypeError: Cannot call method 'getCurrent' of undefined
Run Code Online (Sandbox Code Playgroud)

代码有什么问题?

mar*_*tin 23

它适用于我一个小修复:

chrome.tabs.getCurrent(function(tab) {
    chrome.tabs.remove(tab.id, function() { });
});
Run Code Online (Sandbox Code Playgroud)

只需确保您在扩展程序的选项页面中运行此代码,而不仅仅是某些HTML页面,因为chrome.tabs API仅适用于扩展程序.

  • 我在 Edge 中运行此代码时收到错误:“错误处理响应:TypeError:无法读取未定义的属性“id””。 (2认同)
  • @gornvix getCurrent 在后台页面中不起作用。getSelected 现已弃用。我必须使用 tabs.query。查看 T.Todua 的回答和我的评论 (2认同)

Bor*_*mus 10

您很可能是从内容脚本运行代码,其中chrome.tabs未定义.如果是这种情况,您可以将消息发送到后台页面,并让后台页面(可以访问chrome.tabs)进行调用.

请注意,从后台页面,您将使用,chrome.tabs.getSelected因为getCurrent将返回undefined.