【问题标题】:How to detect browser close event in node js?如何检测节点js中的浏览器关闭事件?
【发布时间】:2015-10-04 02:56:24
【问题描述】:

我使用 Electron(以前的 Atom Shell)使用 NodeJS 创建桌面应用程序。

我正在使用以下代码在浏览器中打开一个网址

var spawn = require('child_process').spawn spawn('open', ['http://www.stackoverflow.com']);

请注意,我没有使用Electron BrowserWindow,这是一个普通的浏览器窗口。

我想在用户关闭此浏览器窗口时执行一项操作。如何检测这个衍生浏览器的关闭事件?

【问题讨论】:

  • 为什么不直接使用 Electron 的 BrowserWindow 并将其锁定,即关闭节点集成?
  • 我创建了一个供 Electron 和 Visual Studio 扩展使用的库。这个库将打开这个浏览器。

标签: node.js electron


【解决方案1】:

尝试使用event emitter

var spawn = require('child_process').spawn,
  browser = spawn('open', ['http://www.stackoverflow.com']);

browser.on('close', function() {
  // Handle event
});

【讨论】:

  • 是的,试过了。这个“关闭”事件会在命令执行后立即触发,甚至在浏览器即将打开之前。关闭浏览器时不会触发。
  • 那么 'open' 可能是某种类型的启动脚本(bat、sh 等)。您是否尝试将“open”替换为可执行文件的路径?
  • 刚刚试过,如果我直接使用可执行路径(谷歌浏览器路径),它会抛出代码EACCES错误。
  • 这有点棘手,因为 Chrome 会不断更改 pid 并为每个会话、缓存块、数据库存储等添加一个 pid。您必须找到主浏览器窗口 pid(特定于操作系统)并轮询它用于活动
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 2014-01-18
  • 2015-04-11
相关资源
最近更新 更多