父视图更新<webview>后未在 Electron 中设置全局变量



我正在尝试在访客页面(角度控制器(中需要一个模块。

当应用程序使用旧版本的节点(0.30.5(时,它运行良好。但是,我不得不将 electron 升级到最新版本 (0.37.6(,并且更新了电子应用程序中ipc的所有用法,因此它现在ipcMainipcRenderer

以前,角度控制器设法使用以下方法要求模块:

var ipc = window['require']('ipc');

所以我认为将其更改为:

var ipcRenderer = window['require']('electron').ipcRenderer;

但是,这不起作用,并且它指出window.require不是一个函数。我已经多次尝试让它与其他方法一起使用,但到目前为止没有任何效果。

问题是 require 是未定义的,但是 require 是在包含 <webview> 的 html 文件中设置的,因此应该定义它。

<webview>转到返回使用角度的<div>的 URL。

<div>中使用的角度控制器不再工作,因为我需要的模块是要在文件中设置的第一件事,并且它是未定义的

编辑:

我现在可以看到我在 html 中设置的属性在应用程序调试器中可见,但它不会出现在 webview 调试器中。

所以我只能假设父视图不会将值传递给<webview>。因此,如果有人知道为什么它不传递值或我需要做什么来设置它,我将不胜感激任何信息。

因此,从当前版本的 Electron (0.37.6( 开始,设置全局变量的方法是在 <webview> 标签上的 preload 属性上指定预加载脚本。例如,在预加载脚本中:

window['ipcRenderer'] = require('electron').ipcRenderer;

这将允许<webview>显示的访客页面使用 ipcRenderer。似乎我以前使用的方法,即在父视图HTML中设置全局变量,不再有效

这是需要电子模块的一种非常古老的方法。这是新的:

var ipcRenderer = require('electron').ipcRenderer;

最新更新