2016-09-01 48 views
1

我在Windows 10,應用電子(V1.2.2)訪問DOM樹,我有一個很大的問題,我的項目之一:從電子子進程

我有輪流到渲染器的腳本處理並創建子進程來運行一些特殊的代碼。我需要在子進程內運行的代碼來訪問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通信只能傳遞一些特定的DATAS的限制,但我知道這是可能送服務器或使用IPC通道的套接字實例,所以我不明白爲什麼無法傳輸文檔。

所以我正在尋找一種方法來訪問子進程的DOM,但我沒有找到任何解決方案。 子進程內部的代碼需要在DOM上做很多操作,不能使用IPC通信來訪問它,否則性能會太慢。

所以,我的問題是:有什麼方法可以從子進程訪問DOM?

回答

2

在討論Electron問題頁面之後,看起來這個問題是不可解決的;沒有辦法將DOM訪問到子進程中,因爲Electron(如nw.js)不是爲此設計的。

更多信息在:https://github.com/electron/electron/issues/7057

編輯:終於讓我找到另一種方式利用webview標籤,它允許運行使用Node.js的特點,總是到一個新的進程的HTML頁面來解決我的問題。更多信息here