electron **功能请求** :记录webcontents.on('close')

3bygqnnd  于 4个月前  发布在  Electron
关注(0)|答案(2)|浏览(59)

预检清单

问题描述

  • 在 BrowserView 中执行 'window.close()' 的渲染进程不会导致窗口关闭(请参阅在此运行的 v21.2.2 上的 fiddle gist:https://gist.github.com/mesner/56cdab123bd4cdd890641303b0d29afe)。
  • 我尚未找到任何确定浏览器视图中的窗口是否以编程方式调用 close 的方法的文档记录方法。
  • 我在这里找到了一个关于 webcontents 的未记录/私有的 "close" 事件:https://github.com/electron/electron/blob/main/shell/browser/api/electron_api_web_contents.cc#L1215
  • 该摘要显示,该事件是由在 browserview 中记录 "WEBCONTENTS.CLOSE" 触发的
  • webcontents 的 close 方法将在 v22 中添加:feat: add webContents.close() #35509
  • 注意,摘要在 v22.beta.3 中没有显示 BrowserView。我没有诊断为什么。

建议的解决方案

  • 如果获得批准,我认为唯一必要的更改是将事件添加到 docs/api/web-contents.md 和侦听器中,并确保它们在 spec/api-web-contents-spec.ts 中触发。
  • 编辑:我看到默认情况下会向发出的事件添加 preventDefault。CloseContents() 方法是否应该提前返回,如果被阻止?

考虑的其他方案

  • 在 browserview 中执行 window.close() 以关闭它所属的浏览器窗口吗?这似乎有更大的影响风险。
  • 编辑:browserview.on('close') 事件,但那将是第一个记录的 BV 事件

其他信息

如果获得批准,我很乐意为此提交 PR。

4dbbbstv

4dbbbstv2#

我看到默认情况下会向发出的事件添加preventDefault。如果被阻止了,CloseContents()方法是否应该提前返回?
这将是非常好的,我现在正在处理一个可以调用window.close()的网站,这会销毁浏览器视图且无法取消(窗口保持打开)。我目前的选择是在客户端JS中替换window.close为一个存根,或者重新创建视图(并重新附加事件)。

相关问题