How to close the current extension tab?

杀马特。学长 韩版系。学妹 提交于 2019-12-18 05:34:32

问题


I'm trying to close the Options page of the extension. I have a Cancel button and I'm using this code:

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

When I'm trying to use it, it always gives this error:

Uncaught TypeError: Cannot call method 'getCurrent' of undefined

What's wrong with the code?


回答1:


It works for me with one little fix:

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

Just make sure you're really running this code in options page of your extension and not just some HTML page, because chrome.tabs API is available only for extensions.




回答2:


Most likely you're running your code from a content script, where chrome.tabs is undefined. If this is the case, you can instead send a message to the background page and have the background page (which has access to chrome.tabs) make the call.

Note that from a background page, you would use chrome.tabs.getSelected since getCurrent will return undefined.




回答3:


In the options page, you can just do:

window.close()

If you wanted to use chrome.tabs.getCurrent, do you have tabs defined in the permissions section within the manifest?




回答4:


I have time to continue my extension after a very long time. I checked the documentation again. So it was a inline script, that I had probably blocked with Content Security Policy in the manifest, because I hadn't read the documentation precisely.
Now Chrome blocks inline scripts by default, so I'll have to fix it anyway.



来源:https://stackoverflow.com/questions/8104973/how-to-close-the-current-extension-tab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!