我有一个BrowserWindow带有预加载脚本的。
我想根据我加载的页面在预加载脚本中公开不同的内容。
在我的应用程序中,我加载页面 A 并导航到页面 B,或者我从头开始加载页面 B。
我正在考虑通过以下方式将其他参数传递给我的预加载:
{
preload: "path_to_preload.js",
additionalArguments: ["onPageB"]
}
然后我的预加载可以做到:
const onPageB = process.argv.find(arg => arg === "onPageB");
然后我根据页面 B 的需要设置我的预加载脚本。
但是,我的预加载脚本最初可以与页面 A 一起加载,因此onPageB将是false,然后即使我导航到页面 B,它也会卡在 false 状态。
我真正需要的是动态响应导航。(理想情况下,我将能够动态切换预加载脚本,但我认为这不受支持,或者从架构的角度来看是可能的)。
为了检测导航,通常我会这样做:
getMyWebContents().on("did-navigate", (e, url) => ...);
但我不能WebContents从渲染器进程中使用。
我显然可以通过 查询我在哪个页面上ipcRenderer.invoke,但我不能只在加载时这样做。当页面导航时我也需要这样做,这似乎表明我必须从主进程中检测到这一点,然后让我的预加载脚本知道这一点。
但我该怎么做。这里有executeJavaScript一个解决方案,我在预加载中调用一个函数来触发更改吗?不确定这是否会正常工作,甚至是一个好的解决方案。