electron 打开的新窗口,未关闭的情况下,再次点击,如何做到不重复创建窗口,而是呼出已经打开过的窗口

问题:electron构建的客户端,有项功能是点击不同的按钮能够创建不同的新窗口。但是当点击相同的按钮时,已经打开过的窗口会再次被重复创建。怎么样能做到不重复创建窗口,而是呼出这个的窗口。

下面是我当前新窗口创建方式:
clickEvent(url) {
let win = new BrowserWindow();
win.loadURL(url);
win.on('close', () => {
win = null;
});
}

阅读 7.8k
1 个回答

问题已经解决,在这里自己回答一下。
思路是:判断当前点击的元素是否有new BrowserWindow()的实列。如果没有就声明一下,并赋值给此元素,如果有实例,可直接show()呼出此窗口。第一次回答问题,估计表达的不是很清楚。还是看代码吧...

// 新窗口列表
const list = [{url: 'html://xxx1.com',isBrowserWindow: null},{url: 'html://xxx2.com',isBrowserWindow: null}]

// 点击事件
clickEvent(item) {

if (item.isBrowserWindow) { // 判断
    item.isBrowserWindow.show();
    item.isBrowserWindow.on('close', () => {
        item.isBrowserWindow = null;
    }
} else {
    let win = new BrowserWindow();
    win.loadURL(item.url);
    item.isBrowserWindow = win; // 赋值
    win.on('close', () => {
        item.isBrowserWindow = null;
    }
}

}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题