因此,在某些页面中,我希望弹出对话框/模式并根据情况显示一些自定义HTML,我想到的最简单的方法是创建全新 BrowserWindow
并根据情况分别加载到popup.html
中。我在做一些事情时需要一些帮助。
首先:我似乎找不到任何方法将传递给浏览器窗口,我已经尝试了以下方法:
let window = new electron.remote.BrowserWindow({...});
let context = "sample context";
window.webContents.executeJavaScript(`electron.remote.getCurrentWindow().context = ${context};`);
window.context = context;
在popup.html
的脚本中,它无法访问:
electron.remote.getCurrentWindow().context;
window.context;
document.context;
因为它们都返回未定义状态。
在尝试寻找某种方式通过测试的测试中,我发现我无法弄清楚如何访问TOP窗口。
例如,如果主窗口打开一个对话框,然后又打开一个对话框,那么主窗口如何获取显示所有其他窗口为ON-TOP的窗口?由于electron.remote.getCurrentWindow()
仅返回该脚本不是顶级窗口的窗口。
答案 0 :(得分:0)
所以一段时间后,我想出了如何做自己想做的事。
在加载对话框/弹出窗口的js文件中,您需要:
const electron = require('electron'), path = require('path');
let window = new electron.remote.BrowserWindow({...});
let context = "sample context";
window.loadURL(url.format({
pathname: path.join(__dirname, "./file.html"),
protocol: 'file:',
slashes: true
})).then(function(){
window.webContents.send('store-data', context);
window.show();
})
electron.ipcRenderer.on("callback", (event,val) => {
window.destroy();
// val is whatever the dialog sent back.
});
在对话框/弹出窗口的js文件中,您需要:
const electron = require('electron'), ipcRenderer = electron.ipcRenderer;
let callback = function (value) {
electron.remote.getCurrentWindow().getParentWindow().webContents.send('callback',value);
};
ipcRenderer.on('store-data', function (event, context) {
console.log(context)//"sample context"
});
//Do whatever. And when you want to close the dialog/popup or send back input, just call callback(...);