javascript - 更新后父 View 未在 Electron 中的 <webview> 上设置全局变量

标签 javascript node.js webview electron

我试图在访客页面( Angular Controller )中需要一个模块。

当应用程序使用旧版本的 Node (0.30.5)时,它运行得很好。但是我必须将 Electron 升级到最新版本(0.37.6),并且我更新了 ipc 的所有使用在 Electron 应用程序中,现在是 ipcMainipcRenderer .

以前, Angular Controller 设法使用以下方式要求模块:

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

所以我认为将其更改为:

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

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

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

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

<div>中使用的 Angular Controller 不再工作,因为我需要的模块是文件中首先要设置的内容,并且它是未定义的

编辑:

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

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

最佳答案

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

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

这将允许访客页面 <webview>正在显示,要使用ipcRenderer。看来我以前使用的方法(在父 View HTML 中设置全局变量)不再起作用了

关于javascript - 更新后父 View 未在 Electron 中的 <webview> 上设置全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36698080/

相关文章:

javascript - 单击填充文本区域并提交的按钮

javascript - 滑动字幕。将小部件 div 放在 caption.resizing 根据图像大小

ios - 从 webView 检测 HTTP 代码 302

javascript - 如何将 jimp 对象转换为 Node 中的图像缓冲区?

node.js - Mongoose 查询使用嵌套数组更新对象

javascript - Titanium 应用程序和远程 webview 之间的通信

javascript - 安卓 WebView "Uncaught SyntaxError: Unexpected token ILLEGAL"

javascript - 对象在javascript中使用自己的方法

javascript - ReactJs 防止输入类型数字中的 e 和点

javascript - 从 RxJS4 迁移到 RxJS5 - 实现观察者