繁体   English   中英

从电子子进程访问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

编辑:最后,我找到了另一种方法来解决此问题,方法是使用webview标记,该标记允许运行具有Node.js功能的HTML页面并始终进入新进程。 更多信息在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM