【问题标题】:Get DOM javascript variable from Node.JS in Electron在 Electron 中从 Node.JS 获取 DOM javascript 变量
【发布时间】:2017-01-25 12:57:07
【问题描述】:

正如标题所说,如何在电子中从 main.js 中的 DOM 获取变量。

代码:

value.js:

var x = document.getElementById('x');

来自 ELECTRON 的 main.js:

const {app, BrowserWindow, Menu} = require('electron')

require('./value.js') // include value.js
console.log(x.getValue());

错误提示:文档未定义

【问题讨论】:

标签: javascript html node.js electron


【解决方案1】:

我相信您正在寻找进程间通信。虽然您也可以将remote 用于某些事情(它基本上是 ipcMain 和 ipcRenderer 的简化包装),但我没有看到 set 全局变量的方法(而且我没有使用它我)。相反,我们可以直接使用ipcMainipcRenderer

例如,您可以在主进程中拥有以下监听器:

let ipc = require('electron').ipcMain,
    test = 0;

ipc.on('setTest', (event,arg)=>{
  test = arg; // Beware of any possible user input!
  event.returnValue = test; // Required for sendSync or it hangs forever! You can send back anything here.
});

ipc.on('getTest', (event,arg)=>{
  event.returnValue = test;
});

在客户端你可以使用类似的东西:

let ipc = require('electron').ipcRenderer;

ipc.sendSync('setTest', 1);
// and/or
ipc.sendSync('getTest');

编辑: 由于 DOM 元素是奇怪的对象,您可能必须使用 jQuery 来 clone 它才能传递它,或者使用另一种克隆方法使其成为 JSON 对象(或者只是以更简单的形式发送您需要的内容)。或者,将内容存储在渲染器上,并通过 IPC 传达何时执行操作。

【讨论】:

    【解决方案2】:

    根据您加载 JavaScript 的方式,您需要将脚本放置在 HTML 的 </body> 结束标记之前,或者放在 window.onload JavaScript 函数中,因为文档对象没有调用document.getElementById时自动创建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-21
      • 2015-01-18
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-28
      相关资源
      最近更新 更多