因此,我有一个菜单项,在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文件中没有文档模块。