从Electron子进程访问DOM树
Accessing the DOM tree from an Electron child process
我在Windows 10上使用Electron (v1.2.2),我的一个项目有一个大问题:
我有一个脚本转换成渲染器进程,并创建子进程运行一些特殊的代码。我需要在子进程内部运行的代码来访问DOM。当进程被创建(使用child_process.fork())时,我使用内置的IPC通道发送一些信息,例如时间戳,一些关于脚本的信息,这些信息将在子进程中运行…
但是当我尝试发送一个类的实例时,它根本不起作用:
//main.js
const child_process = require('child_process');
const child = child_process.fork('child.js');
child.send({ready: { version: '0.0.1', dom: document }});
// child.js
process.on('message', (m) => {
typeof m.dom.body.appendChild; // ReferenceError
});
我想这是IPC通信的限制,只能传输一些特定的数据,但我知道可以使用IPC通道发送服务器或套接字实例,所以我不明白为什么不可能传输文档。
所以我正在寻找从子进程访问DOM的方法,但我没有找到任何解决方案。子进程内部的代码需要对DOM进行大量的操作,不能使用IPC通信来访问它,否则性能会太慢。
所以,我的问题是:有没有办法从子进程访问DOM ?
进入电子问题页面讨论后,似乎这个问题是无法解决的;没有办法在子进程中访问DOM,因为Electron(像nw.js)不是为此而设计的。
更多信息请访问:https://github.com/electron/electron/issues/7057
EDIT:最后,我找到了另一种方法来解决我的问题,使用webview
标签,允许运行一个具有Node.js功能的HTML页面,并总是进入一个新的进程。更多信息在这里
相关文章:
- 从popup.js|Chrome扩展访问DOM
- 如何在My chrome扩展中获取其他chrome扩展的DOM访问权限
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 访问VueJS中的DOM元素
- 在 ng-if 编译后访问指令中的 DOM 元素
- React:是否可以访问DOM元素's道具
- Meteor - 从另一个模板事件处理程序访问 DOM 元素
- 如何在JavaScript中访问上一个同级的DOM
- 存在什么库来提供跨浏览器 DOM 访问
- 骨干.js视图,dom 访问不起作用
- Chrome 中的 DOM 访问
- gMap 3和infoWindow中的jQuery DOM访问
- 不使用DOM访问全局JS上下文的属性
- 使用dom访问调用javascript文件
- 通过JavaScript/DOM访问CSS媒体查询规则
- 使用JS和DOM访问span中的值
- 为什么我不能在JS中使用DOM访问HTML表?
- 在使用$element.ech()时加快DOM访问速度
- 使用jquery和DOM访问表单元素
- 引导弹出窗口不允许DOM访问.该怎么做