BrowserWindow.fromId是否返回已销毁的窗口?

时间:2018-10-03 14:29:47

标签: electron

当我在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()还是仍然需要?

1 个答案:

答案 0 :(得分:0)

进行了快速测试,如果您通过单击X或调用BrowserWindow关闭window.close(),则BrowserWindow.fromId(myWindowId)返回null

因此,如果您通过BrowserWindow.fromId来获取窗口,则无需检查窗口是否已销毁。如果您不使用fromId并只是从变量中存储和获取窗口,则仍应选中isDestroyed()

话虽这么说,但我不确定在其他情况下调用isDestroyed()是否多余。