Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Electron:dialog.showMessageBox()无法使用父窗口(模式失败)_Javascript_Node.js_Electron - Fatal编程技术网

Javascript Electron:dialog.showMessageBox()无法使用父窗口(模式失败)

Javascript Electron:dialog.showMessageBox()无法使用父窗口(模式失败),javascript,node.js,electron,Javascript,Node.js,Electron,我在学习电子,尝试一些基本的东西。。。没有成功 无论我使用什么技术来创建对话框模式,它都失败了。对话框不是模态的,或者对话框是空的(…并且仍然不是模态的) 此代码从主进程调用,终端或开发工具中不会显示任何错误。如果我使用dialog.showMessageBox()而不是showMessageBoxSync(),结果是一样的 Electron:Windows10(x64)上的v9.0.5。对话框。showMessageBoxSync接受两个参数,其中第一个参数是可选的。因此,即使它为null或未

我在学习电子,尝试一些基本的东西。。。没有成功

无论我使用什么技术来创建对话框模式,它都失败了。对话框不是模态的,或者对话框是空的(…并且仍然不是模态的)

此代码从主进程调用,终端或开发工具中不会显示任何错误。如果我使用
dialog.showMessageBox()
而不是
showMessageBoxSync()
,结果是一样的


Electron:Windows10(x64)上的v9.0.5。

对话框。showMessageBoxSync
接受两个参数,其中第一个参数是可选的。因此,即使它为null或未定义,也可以在没有它的情况下工作。 所以,每个对话框模块方法只有在应用程序准备就绪后才能工作

app.on('ready', () => {
  // create window call

  // your code

  dialog.showMessageBoxSync(BrowserWindow.getFocusedWindow(), {message: "FooBar"});

  dialog.showMessageBoxSync(BrowserWindow.getAllWindows()[0], {message: "FooBar"});
})
所以,请确保在应用程序准备就绪后调用它

app.on('ready', () => {
  // create window call

  // your code

  dialog.showMessageBoxSync(BrowserWindow.getFocusedWindow(), {message: "FooBar"});

  dialog.showMessageBoxSync(BrowserWindow.getAllWindows()[0], {message: "FooBar"});
})

或者任何其他准备好的倾听方式都会奏效。就像
app.whenReady()
好的,错误在于我的主窗口是
BrowserWindow
的子类。Electron不允许对本机类进行子类化。见问题:





很遗憾,官方文档仍然没有提到这个重要的限制。

这并没有回答我的问题:(代码是由在发出“就绪”事件后创建的主窗口中的菜单项调用的。所以我不明白为什么
BrowserWindow.getAllWindows()
返回一个空数组,为什么从菜单项的
单击处理程序中传递
窗口
参数会使消息框显示为空,而它应该显示“FooBar”。我在回答它之前做了检查。对于这两个函数调用非常有效。之所以有效,是因为
BrowserWindow.GetFocusedWidow()
返回
浏览器窗口的一个实例
…但这不是我的情况。请参阅我自己对此问题的答案。