如何在主要js流程中保存/打开文件?

时间:2019-06-26 09:09:06

标签: electron

因此,我有一个菜单项,在click上运行一个函数,但是要保存的函数需要document.getElementById,但是主进程找不到该文档。如何在main.js中运行该功能?

我尝试在主文档中使用相同的代码,但是由于某些原因,它也不起作用。但是,我只想从菜单中保存。

这是菜单的一部分:

{
        label: 'File',
        submenu: [
            {
                label: 'New File',
                accelerator: 'CmdOrCtrl+N',
                click(){
                    newFile();
                }
            },
            {
                type: 'separator'
            },
            {
                label: 'Save',
                accelerator: 'CmdOrCtrl+S'
            },
            {
                label: 'Save As',
                accelerator: 'Shift+CmdOrCtrl+S'
            },
            {
                label: 'Open',
                accelerator: 'CmdOrCtrl+O'
            }
        ]
    },

以下是保存代码,例如:

function newFile() {
    dialog.showSaveDialog((fileName) => {
        if (fileName === undefined) {
            alert("You didnt save the file!");
            return;
        }

        var content = ipc.getElementById('editor').innerText;
        fs.writeFile(fileName, content, (err) => {
            if (err) console.log(err);
            alert("The file has been successfilly saved.")
        })
    })
}

这是打开文件代码:

function openFile() {
    document.getElementById('loadFile').addEventListener("click", () => {
        dialog.showOpenDialog((fileName) => {
            if (filename === undefined) {
                console.log('No files were selected')
                return
            }
            fs.readFile(filename[0], "utf-8", (err, data) => {
                console.log("Cannot read file, error: ", err);
                return;

                document.getElementById('editor').innerText = data;
            })
        })
    }, false)
}

在我真正保存它之前,它一直起作用,然后出现此错误:

Uncaught Exception:
TypeError: Cannot read property 'getElementById' of undefined
    at /Users/joeyscript/Documents/Code/Activetype/app.js:111:27
    at Function.wrappedCallback (/Users/joeyscript/Documents/Code/Activetype/node_modules/electron/dist/Electron.app/Contents/Resources/electron.asar/browser/api/dialog.js:189:24)

我希望它可以保存/打开,但是主js文件中没有文档模块。

0 个答案:

没有答案