Я только изучаю Electron и пытаюсь открыть файл и отобразить его в новом окне. Я нажимаю кнопку в начальном (root) окне, которое затем открывает диалоговое окно «Открыть файл», из которого я могу получить путь к файлу. Я хотел бы затем открыть этот файл, создать окно и передать содержимое файла в новое окно. Моя проблема заключается в получении строки с содержимым файла в функцию обратного вызова, когда окно готово; это вообще возможно? Мой главный. js код:
function createWindow (templateFile, initialData)
{ console.log("Creating window....")
newWindow = new BrowserWindow({width: 800,
height: 600,
webPreferences: {preload: path.join(__dirname, 'preload.js'),
nodeIntegration: true}
})
newWindow.loadFile(templateFile)
newWindow.webContents.openDevTools()
//This is what doesn't work; I want to take the initialData argument to the createWindow function,
//and get it into the 'did-finish-load' callback function
newWindow.webContents.on('did-finish-load', (event, initialData) =>
{ windowsArray[newWindow.webContents.id] = newWindow
console.log(initialData)
newWindow.webContents.send("initialDataLoad", initialData)
})
newWindow.on('closed', function () {newWindow.object = null})
}
ipcMain.on("new-sheet", (event, gameDefinitionFile) =>
{ console.log("Loading " + gameDefinitionFile)
let gameDefContents
fs.readFile(gameDefinitionFile, 'ascii', (err, gameDefContents) => {})
createWindow("defaultSheet.html", gameDefContents)
})
Я прочитал, что вы можете просто создать новый атрибут в объекте webContents и затем ссылаться на него из процесса рендеринга, но это не похоже на то, что нужно делать. Итак, что мне делать вместо этого?
полный код на https://gitlab.com/sjbrown8/osiris