Javascript 使用模态';showOpenDialog";然后打开一个模态窗口只工作一次
Electron v8.1.1–macOS 10.14.5 我最近更新了一个较旧的项目以使用Javascript 使用模态';showOpenDialog";然后打开一个模态窗口只工作一次,javascript,electron,Javascript,Electron,Electron v8.1.1–macOS 10.14.5 我最近更新了一个较旧的项目以使用Electron8.1.1,我遇到了一个问题,即使用模式,然后打开一个带有文件选择器结果的模式窗口 它在第一次通过时工作,但如果在关闭模式窗口后,我再次尝试这样做,则失败–当我尝试打开文件选择器(调用下面的showPDFPicker函数)时,系统会发出“嘟嘟”声 我试着调试它,但是它深入到了电子代码中,并且没有出错就退出了–只有系统“嘟嘟”声。就好像模态对话框从未关闭一样 如果我使用null而不是父窗口调
Electron
8.1.1,我遇到了一个问题,即使用模式,然后打开一个带有文件选择器结果的模式窗口
它在第一次通过时工作,但如果在关闭模式窗口后,我再次尝试这样做,则失败–当我尝试打开文件选择器(调用下面的showPDFPicker
函数)时,系统会发出“嘟嘟”声
我试着调试它,但是它深入到了电子代码中,并且没有出错就退出了–只有系统“嘟嘟”声。就好像模态对话框从未关闭一样
如果我使用null
而不是父窗口调用文件选择器,则例程将按预期工作:
dialog.showOpenDialog(null, options)
有人在Electron
v8+上遇到过这种情况吗?它在以前的版本(afaik)中曾经工作过。我尝试调用setTimeOut
延迟打开模式窗口1000毫秒,认为可能需要一些清理时间,但这没有帮助
我构建了一个测试项目,去掉了所有其他代码,但仍然失败
我希望showOpenDialog
filepicker是模态的,所以我希望这是我的代码有问题,而不是Electron
中的错误
main.js
function showPDFPicker() {
var options = {
title: 'Select PDF',
properties: ['openFile'],
filters: [{ name: 'PDF', extensions: ['pdf'] }],
defaultPath: app.getPath("desktop")
}
dialog.showOpenDialog(mainWindow, options)
.then(result => {
if (result.canceled == false) {
filePickerCallback(result.filePaths)
}
}).catch(err => {
console.log('ERROR', err);
});
function filePickerCallback(filenames) {
if (filenames && filenames.length > 0) {
createPDFConvertWindow(filenames[0]);
}
}
}
function createPDFConvertWindow(pdfFile) {
pdfConvertWindow = new BrowserWindow({
parent: mainWindow,
modal: true,
show: false,
width: 800,
height: 600,
backgroundColor: '#cccccc',
center: true,
webPreferences: {
nodeIntegration: true
}
});
var theUrl = path.join(__dirname, 'app', 'import-dialog.html');
pdfConvertWindow.loadFile(theUrl);
pdfConvertWindow.on('ready-to-show', () => {
pdfConvertWindow.show();
})
}