如何在电子中防止多个showOpenDialog窗口

时间:2017-06-22 07:09:34

标签: node.js electron

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

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

如何关注首次打开的对话框并且如果已经打开了对话框,则不允许重新打开新对话框?

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

3 个答案:

答案 0 :(得分:1)

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

来自"Electron API Demos"的更多信息:

enter image description here

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

答案 1 :(得分:0)

将此代码添加到main.js文件下

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

if (isSecondInstance) {
  app.quit()
}

答案 2 :(得分:0)

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

transferArrayItem(
    event.previousContainer.data,
    event.container.data,
    event.previousIndex,
    event.currentIndex);

this.service.asyncItem(itemToUpdate).toPromise().catch(() => {
    transferArrayItem(
          event.container.data,
          event.previousContainer.data,
          event.currentIndex,
          event.previousIndex);

    this.cdr.detectChanges();
});