当我在Electron中创建一个BrowserWindow
并对其进行操作时,我一直在习惯性地检查窗口是否被破坏:
const window = new BrowserWindow(opts);
setMyWindow(window);
// ... later
const window = getMyWindow();
if (window && !window.isDestroyed()) {
// do something on the window
}
原因是,如果用户关闭窗口,则window
变量仍会设置,因为我尚未明确将其清空,但是BrowserWindow
换行的实际Window无效,大概就是isDestroyed()
正在检查的内容。
有时候不需要检查吗?
具体地说,BrowserWindow.fromId(windowId);
是否返回被销毁的窗口?如果fromId
给了我一个窗口,我可以安全地不检查isDestroyed()
还是仍然需要?
答案 0 :(得分:0)
进行了快速测试,如果您通过单击X或调用BrowserWindow
关闭window.close()
,则BrowserWindow.fromId(myWindowId)
返回null
。
因此,如果您通过BrowserWindow.fromId
来获取窗口,则无需检查窗口是否已销毁。如果您不使用fromId
并只是从变量中存储和获取窗口,则仍应选中isDestroyed()
。
话虽这么说,但我不确定在其他情况下调用isDestroyed()
是否多余。