我正在尝试关闭扩展程序的“选项”页面。 我有一个取消按钮,我正在使用此代码:
chrome.tabs.getCurrent(null, function(tab) {
chrome.tabs.remove(tab.id, function() {});
});
当我尝试使用它时,它总是会出现此错误:
Uncaught TypeError: Cannot call method 'getCurrent' of undefined
代码出了什么问题?
答案 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)
答案 3 :(得分:1)
我有时间在很长一段时间后继续我的延期。我再次检查了文档。所以这是一个内联脚本,我可能已经在清单中阻止了内容安全策略,因为我没有准确地阅读文档。
现在,Chrome默认会阻止内联脚本,因此无论如何我都必须修复它。
答案 4 :(得分:0)
这仅对我有用:
chrome.tabs.query({ active: true }, function(tabs) {
chrome.tabs.remove(tabs[0].id);
});