【问题标题】:Object has been destroyed Exception after reopen BrowserWindow on button click in Electron在 Electron 中单击按钮重新打开 BrowserWindow 后,对象已被销毁异常
【发布时间】:2018-05-28 03:24:03
【问题描述】:

我是 Electron 框架的新手,使用 Electron 开发简单的桌面应用程序。 问题是,当我在电子应用程序中打开一个新窗口并使用菜单栏关闭按钮关闭它并再次尝试打开它时,它会抛出“对象已被破坏异常”。即使单击关闭按钮,我如何保留 BrowserWindow 对象???

【问题讨论】:

  • 请出示您的代码

标签: javascript jquery node.js electron


【解决方案1】:

如果有人遇到此问题,而其他答案没有帮助。我在处理关闭窗口时遇到了类似的问题。我通过使用window.destroy() 而不是window.close() 来修复它

【讨论】:

    【解决方案2】:

    BrowserWindow 对象应该在关闭时被销毁。您需要在重新打开时实例化一个新的,而不是尝试重用该引用。

    编辑:

    如何实例化它取决于你是从主进程(即“Main.js”)还是渲染器进程中进行实例化。

    从主进程来看,它看起来像:

    var electron = require("electron");
    var url = require("url");
    var path = require("path");
    var newWindow = new electron.BrowserWindow({
        width: 700,
        height: 500
    });
    
    newWindow.loadURL(url.format({
        pathname: path.join(__dirname, '/SomeStuff.html'),
        protocol: 'file:',
        slashes: true
    }));
    

    如果从渲染器进程实例化,则需要使用“远程”对象来访问主进程。所以它会是这样的:

    var newWindow = new electron.remote.BrowserWindow({
        width: 700,
        height: 500
    });
    

    【讨论】:

    • 我知道它的对象在关闭后已经被销毁了,但是我应该在哪里再次实例化它呢?单击按钮后尝试实例化但给出“BrowserWindow 不是构造函数”错误
    • 我添加了一个例子。第一篇文章我在手机上。希望有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多