【问题标题】:Parent view not setting global variable on <webview> in Electron after updating更新后,父视图未在 Electron 中的 <webview> 上设置全局变量
【发布时间】:2016-08-10 10:23:36
【问题描述】:

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

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

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

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

所以我想把它改成:

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

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

问题是require是undefined,但是require是在包含&lt;webview&gt;的html文件中设置的,所以应该定义它。

&lt;webview&gt; 转到一个 URL,该 URL 返回一个使用 Angular 的 &lt;div&gt;

&lt;div&gt; 中使用的角度控制器不再工作,因为我需要的模块是文件中首先设置的,它是未定义的

编辑:

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

所以我只能假设父视图不会将值传递给&lt;webview&gt;。因此,如果有人知道它为什么不传递值或我需要做些什么来设置它,我将不胜感激。

【问题讨论】:

    标签: javascript node.js webview electron


    【解决方案1】:

    所以从当前版本的 Electron (0.37.6) 开始,设置全局变量的方法是在 &lt;webview&gt; 标签的 preload 属性上指定预加载脚本。例如在预加载脚本中:

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

    这将允许&lt;webview&gt; 正在显示的访客页面使用ipcRenderer。看来我之前使用的在父视图 HTML 中设置全局变量的方法不再起作用了

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这就是我尝试过的......但它没有用。还有其他建议吗?我试图通过电子常见问题解答,这似乎破坏了应用程序中的其他内容。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 2012-06-18
      相关资源
      最近更新 更多