【发布时间】:2016-11-15 01:22:08
【问题描述】:
我有一个可以打开不同窗口的 Electron 应用。
在应用启动时,应用会打开一组窗口(加载相同的 HTML 和 JS 文件),但使用参数来更改每个窗口显示的信息。
例子:
app.on('ready', async () => {
...
// open window for stuff 1
win1 = new BrowserWindow({
width: 1024,
height: 728
});
win1.loadURL(`file://${__dirname}/app/app.html?id=1`);
// open window for stuff 2
win2 = new BrowserWindow({
width: 1024,
height: 728
});
win2.loadURL(`file://${__dirname}/app/app.html?id=2`);
显然在 file:// 路径中传递参数不起作用。 我在 Electron 文档或 Internet 上的其他地方找不到明确的解决方案,以将渲染的窗口调整为参数。
我可能可以在窗口准备好后使用 IPC 通信,但在我只想将变量传递给我的子视图之前,这似乎有点太复杂了。
附: : 老实说,我的应用程序是使用 React/Redux 构建的,我想要传递给视图的参数是用于监听此视图的 redux 存储键。
【问题讨论】:
-
在
file://路径中传递参数(和哈希)对我来说效果很好。正如预期的那样,所有参数都在location中。 -
我不会对文件使用这个参数化的 URL 概念,如果你愿意在 HTTP 服务器上提供它们。相反,您可以做不同的事情,例如使用 Cookie,在开始时阅读它们。或者只是使用 win1.webContents.executeJavaScript("var query = {id:1}")... 至少它是一个衬里
-
我认为你的两个回答都成功了。
-
我认为向
file://提供(短)参数没有任何问题;也就是说,我还使用了一个preload脚本文件,从中我从主线程获取一个(可能很大的)JSON 页面数据字符串,并使其可用于页面。这样页面数据在页面加载期间就已经可用了。 -
您似乎每 4 小时问一次同样的问题。 youtube.com/watch?v=jKzBJAowmGg
标签: javascript electron