如何从扩展程序中退出Chrome?

Law*_*and 3 javascript google-chrome-extension

我正在开发Chrome扩展程序,在某些时候我需要退出浏览器的进程.

我尝试使用此代码关闭所有窗口:

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

它适用于Windows和Linux,但不适用于Mac(因为在Mac上,关闭所有窗口并不意味着关闭浏览器).

有没有办法从扩展程序关闭浏览器?

谢谢.

Rob*_*b W 8

安装最新版本的Chrome(从开发渠道获取或使用Canary)并创建使用chrome.processesAPI 的扩展程序.

浏览器的进程似乎有ID 0.因此,以下代码将终止Chrome:

chrome.processes.terminate(0);
Run Code Online (Sandbox Code Playgroud)

但是,由于没有记录,我建议获取进程列表,遍历列表并终止浏览器的进程:

chrome.processes.getProcessInfo([], false, function(processes) {
    processes.forEach(function(process) {
        if (process.type === 'browser') {
            chrome.processes.terminate(process.id);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

适用于所有Chrome版本的其他方法:

  • 创建一个NPAPI插件并杀死Chrome.
  • 托管您选择的本地服务器,以终止您的浏览器(http)请求.
  • 安装本地应用程序并使用本机消息 API请求终止Chrome.

这些方法不是很方便,并且所有二进制代码和/或外部应用程序都可以工作.因此,我建议使用我在答案中概述的方法.