Javascript 如何使克隆的DOM元素JSON可序列化
我目前正在使用framework,我正试图通过系统将一个克隆的DOM元素从Javascript 如何使克隆的DOM元素JSON可序列化,javascript,json,dom,ipc,electron,Javascript,Json,Dom,Ipc,Electron,我目前正在使用framework,我正试图通过系统将一个克隆的DOM元素从webview中的预加载脚本发送到我的渲染器进程。尽管如此,DOM元素无法转换为JSON,因此收到的消息打印出一个空对象(Object{})。这是我的密码: Preload.js var ipc = require("electron").ipcRenderer; function getData(element, trait){ if(trait === "id"){ var elem = document
webview
中的预加载脚本发送到我的渲染器进程。尽管如此,DOM元素无法转换为JSON,因此收到的消息打印出一个空对象(Object{}
)。这是我的密码:
Preload.js
var ipc = require("electron").ipcRenderer;
function getData(element, trait){
if(trait === "id"){
var elem = document.getElementById(element);
}
else{
var elem = document.getElementsByClass(element);
}
var cloned = elem.cloneNode(true);
ipc.sendToHost("retrieve", cloned);
console.log("sent");
}
ipc.on("incoming", function(event, initData){
getData(initData.selected, initData.trait);
});
Renderer.js
loader.addEventListener("ipc-message", function (e) {
if (e.channel === "retrieve") {
console.log(e.args[0]); // I want this to print out the DOM object
}
});
loader.addEventListener("dom-ready", function() {
console.log("loaded");
var x = marks.list[i];
loader.send("incoming", x);
loader.openDevTools();
i++;
});
我不能只从DOM中挑选我需要的东西,因为我需要initData.selected
的元素和附加的CSS中的所有东西
有没有可能解决这个问题?如果没有,那么是否有任何方法可以在这两个进程之间发送DOM元素,可能是使用另一个程序或node.js模块?谢谢。如果IPC只接受字符串参数,那么您应该改为发送HTML,这意味着使用
ipc.sendToHost(“检索”,克隆.outerHTML)代码>
然后这个
var html = e.args[0],
dummy = document.createElement('div'),
cloned;
dummy.innerHTML = html;
// this will give you the node that you sent with all the inline CSS
cloned = dummy.childNodes[0];
console.log(cloned );
注意:我们只能传递内联样式,在文档级别加载的CSS不能用html序列化