electron中用快捷键创建的窗口是否可以保证唯一?

在app.on('ready')中注册快捷键

if(!globalShortcut.isRegistered('CommandOrControl+Alt+S')){
      globalShortcut.register('CommandOrControl+Alt+S', function () {
        // 跳出的内容
        const searchPath = `file://${__dirname}/public_html/search.html`;
        let searchWin = new BrowserWindow({width: 400, height: 275});
        searchWin.loadURL(searchPath);
        searchWin.show();
        searchWin.on('close', ()=>{
          searchWin = null;
        })
      });
    }

多次使用ctrl+alt+s 会生成很多这个页面, 是否有方法可以确保这个页面未关闭的情况下,呼出这个页面,否则就创建这个页面。

阅读 2.9k
1 个回答

...你把 searchWin 这个变量保存一下, 或者提高到和 app 一样的层次

let searchWin = null;

if(!globalShortcut.isRegistered('CommandOrControl+Alt+S')){
      globalShortcut.register('CommandOrControl+Alt+S', function () {
        // 跳出的内容
        if (!searchWin)
        {
            const searchPath = `file://${__dirname}/public_html/search.html`;
            searchWin = new BrowserWindow({width: 400, height: 275});
            searchWin.loadURL(searchPath);
            searchWin.on('close', ()=>{
              searchWin = null;
            })
        }
      });
    }

代码未测试, 大概就是这个思路, 有问题再交流...

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