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

时间:2011-11-12 14:16:18

标签: google-chrome-extension

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

chrome.tabs.getCurrent(null, function(tab) {
  chrome.tabs.remove(tab.id, function() {});
});

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

Uncaught TypeError: Cannot call method 'getCurrent' of undefined

代码出了什么问题?

5 个答案:

答案 0 :(得分:19)

这对我来说只有一点点修复:

chrome.tabs.getCurrent(function(tab) {
    chrome.tabs.remove(tab.id, function() { });
});

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

答案 1 :(得分:7)

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

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

答案 2 :(得分:3)

在选项页面中,您可以执行以下操作:

window.close()

如果您想使用chrome.tabs.getCurrent,您是否在manifest的权限部分中定义了tabs

答案 3 :(得分:1)

我有时间在很长一段时间后继续我的延期。我再次检查了文档。所以这是一个内联脚本,我可能已经在清单中阻止了内容安全策略,因为我没有准确地阅读文档。
现在,Chrome默认会阻止内联脚本,因此无论如何我都必须修复它。

答案 4 :(得分:0)

这仅对我有用:

chrome.tabs.query({ active: true }, function(tabs) {  
    chrome.tabs.remove(tabs[0].id);   
});