簡體   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