Итак, у меня есть пункт меню, который на 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 нет модуля документов.