【问题标题】:How To Prevent More Than One showOpenDialog Window In Electron如何防止 Electron 中出现多个 showOpenDialog 窗口
【发布时间】:2020-07-04 01:52:25
【问题描述】:

当在渲染器窗口中单击按钮时,我在 Electron 中调用简单的 showOpenDialog 系统对话框。

问题是当按钮点击不止一次时,新的showOpenDialog 弹出窗口会在旧的弹出窗口之上打开。

如何专注于第一个打开的对话框,如果已经打开一个对话框,则不允许重新打开新对话框?

最好当showOpenDialog 已经打开时,它应该阻塞调用渲染器进程窗口,直到对话框弹出关闭。类似的行为已经有dialog.showMessageBox

【问题讨论】:

    标签: node.js electron


    【解决方案1】:

    我能够通过添加“工作表”样式对话框为 Mac OS 解决此问题。

    更多信息来自"Electron API Demos"

    没有在 Win / Lin OS`es 上测试,所以那里的行为是未知的。

    【讨论】:

      【解决方案2】:

      这对我来说一次只弹出一个对话框。希望对您有所帮助。

       <div id="filePath" name="file">None</div>
       <input type="button" value="Select File" onclick="selectFile()">
      
      <script>
      const { dialog } = require('electron').remote;
      function selectFile(){
      dialog.showOpenDialog({properties: ['openFile']}, 
        function (path) {
            //see file name in console
            console.log(path);
            //save info to a div and var if needed
            file = path; 
            document.getElementById("filePath").innerText = file;
        }
      );
      }
      </script>
      

      【讨论】:

        【解决方案3】:

        在 main.js 文件下添加这段代码

        let mainWindow = null;
        const isSecondInstance = app.makeSingleInstance((commandLine, workingDirectory) => {
          if (mainWindow) {
              if (mainWindow.isMinimized()) mainWindow.restore()
              mainWindow.focus()
          }
        })
        
        if (isSecondInstance) {
          app.quit()
        }
        

        【讨论】:

        • 这个问题是关于 showOpenDialog 而不是电子窗口
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-30
        • 2018-03-03
        • 2016-06-25
        • 2021-06-30
        • 1970-01-01
        • 2013-06-07
        • 1970-01-01
        相关资源
        最近更新 更多