Electron "ready-to-show" 事件未按预期工作
Electron "ready-to-show" event not working as expected
这是我的应用程序中的一段代码 Codey。
src/main.py
// Show window once it has finished initialising
docsWindow.once("ready-to-show", () => {
if (darkMode) {
docsWindow.webContents.send("dark-mode:toggle");
}
if (!isDarwin) {
docsWindow.webContents.send("platform:not-darwin");
}
docsWindow.webContents.send("docs:jump", section);
docsWindow.show();
});
src/docs/renderer.js
window.api.darkMode.toggle.receive(toggleDarkMode);
当 darkMode = true 时,toggleDarkMode 永远不会 运行。
我的应用程序有两个不同的 windows - 一个编辑器和一个文档 window。对于这两个 windows,在“ready-to-show”事件中,“dark-mode:toggle”被发送到渲染器进程。但是,文档 window 无法 运行 toggleDarkMode 函数,而它适用于编辑器 window.
注意:应用程序必须使用“yarn package”打包,因为某些功能在开发环境中不起作用。
任何帮助将不胜感激。
对于任何感兴趣的人。我找到了解决问题的方法。
src/main.py
// Show window once it has finished initialising
- docsWindow.once("ready-to-show", () => {
+ docsWindow.webContents.once("did-finish-load", () => {
if (darkMode) {
docsWindow.webContents.send("dark-mode:toggle");
}
if (!isDarwin) {
docsWindow.webContents.send("platform:not-darwin");
}
docsWindow.webContents.send("docs:jump", section);
docsWindow.show();
});
在文档 window 中,与编辑器 window 相比,要呈现的内容 HTML 多。因此,DOM 需要更长的时间来加载并且“ready-to-show”事件在完成之前发出。使用“did-finish-load”事件,确保 API 函数在 DOM 完成加载之前不会被调用。
这是我的应用程序中的一段代码 Codey。
src/main.py
// Show window once it has finished initialising
docsWindow.once("ready-to-show", () => {
if (darkMode) {
docsWindow.webContents.send("dark-mode:toggle");
}
if (!isDarwin) {
docsWindow.webContents.send("platform:not-darwin");
}
docsWindow.webContents.send("docs:jump", section);
docsWindow.show();
});
src/docs/renderer.js
window.api.darkMode.toggle.receive(toggleDarkMode);
当 darkMode = true 时,toggleDarkMode 永远不会 运行。
我的应用程序有两个不同的 windows - 一个编辑器和一个文档 window。对于这两个 windows,在“ready-to-show”事件中,“dark-mode:toggle”被发送到渲染器进程。但是,文档 window 无法 运行 toggleDarkMode 函数,而它适用于编辑器 window.
注意:应用程序必须使用“yarn package”打包,因为某些功能在开发环境中不起作用。
任何帮助将不胜感激。
对于任何感兴趣的人。我找到了解决问题的方法。
src/main.py
// Show window once it has finished initialising
- docsWindow.once("ready-to-show", () => {
+ docsWindow.webContents.once("did-finish-load", () => {
if (darkMode) {
docsWindow.webContents.send("dark-mode:toggle");
}
if (!isDarwin) {
docsWindow.webContents.send("platform:not-darwin");
}
docsWindow.webContents.send("docs:jump", section);
docsWindow.show();
});
在文档 window 中,与编辑器 window 相比,要呈现的内容 HTML 多。因此,DOM 需要更长的时间来加载并且“ready-to-show”事件在完成之前发出。使用“did-finish-load”事件,确保 API 函数在 DOM 完成加载之前不会被调用。