Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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 使用模态';showOpenDialog";然后打开一个模态窗口只工作一次_Javascript_Electron - Fatal编程技术网

Javascript 使用模态';showOpenDialog";然后打开一个模态窗口只工作一次

Javascript 使用模态';showOpenDialog";然后打开一个模态窗口只工作一次,javascript,electron,Javascript,Electron,Electron v8.1.1–macOS 10.14.5 我最近更新了一个较旧的项目以使用Electron8.1.1,我遇到了一个问题,即使用模式,然后打开一个带有文件选择器结果的模式窗口 它在第一次通过时工作,但如果在关闭模式窗口后,我再次尝试这样做,则失败–当我尝试打开文件选择器(调用下面的showPDFPicker函数)时,系统会发出“嘟嘟”声 我试着调试它,但是它深入到了电子代码中,并且没有出错就退出了–只有系统“嘟嘟”声。就好像模态对话框从未关闭一样 如果我使用null而不是父窗口调

Electron v8.1.1–macOS 10.14.5

我最近更新了一个较旧的项目以使用
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();
    })
}