我正在开发 Chrome 扩展程序,有时我需要退出浏览器的进程。
我尝试使用以下代码关闭所有窗口:
chrome.windows.getCurrent({}, function(window) {
chrome.windows.remove(window.id);
});
它适用于 Windows 和 Linux,但不适用于 Mac(因为在 Mac 上,关闭所有窗口并不意味着关闭浏览器)。
有没有办法从扩展程序中关闭浏览器?
谢谢。
我正在开发 Chrome 扩展程序,有时我需要退出浏览器的进程。
我尝试使用以下代码关闭所有窗口:
chrome.windows.getCurrent({}, function(window) {
chrome.windows.remove(window.id);
});
它适用于 Windows 和 Linux,但不适用于 Mac(因为在 Mac 上,关闭所有窗口并不意味着关闭浏览器)。
有没有办法从扩展程序中关闭浏览器?
谢谢。
安装最先进的 Chrome 版本(如果从开发通道获取或使用 Canary)并创建一个使用chrome.processes
API 的扩展程序。
似乎浏览器的进程 ID 为 0。因此,以下代码将终止 Chrome:
chrome.processes.terminate(0);
但是,由于没有记录,我建议获取进程列表,遍历列表并终止浏览器的进程:
chrome.processes.getProcessInfo([], false, function(processes) {
processes.forEach(function(process) {
if (process.type === 'browser') {
chrome.processes.terminate(process.id);
}
});
});
适用于所有 Chrome 版本的替代方法:
这些方法不是很方便,而且所有的二进制代码和/或外部应用程序都可以工作。因此,我建议使用我在回答中概述的方法。
截至 2018 年:
没有任何花哨的现代答案。只是一个 chrome 扩展。
将这个坏男孩添加到您的popup.js
或browseraction.js
(随心所欲地称呼它)
chrome.tabs.query({}, function (tabs) {
for (var i = 0; i < tabs.length; i++) {
chrome.tabs.remove(tabs[i].id);
}
});
window.close();
并确保将它列在manifest
( JSON
) 和popup
( HTML
) 文件中:
HTML
<html>
<head>
<script src="js/popup.js"></script>
</head>
</html>
JSON
...
"browser_action": {
"default_icon": "this part is optional.png",
"default_title": "close chrome",
"default_popup": "popup.html",
"matches": ["*://*", "*:*"]
},
...
如果没有打开其他选项卡,您可以通过触发关闭当前选项卡:
chrome.tabs.getCurrent(function(tab) {
chrome.tabs.remove(tab.id)
})
这将关闭浏览器。