Javascript 如何将整个dom作为对象以xml和html格式从内容脚本传递到后台页面?

Javascript 如何将整个dom作为对象以xml和html格式从内容脚本传递到后台页面?,javascript,html,xml,google-chrome-extension,content-script,Javascript,Html,Xml,Google Chrome Extension,Content Script,我可以通过将其转换为字符串,然后按如下方式发送,使其在html中工作: messages = document.getElementsByTagName("html")[0].outerHTML; 但是,我不知道这是什么xml等价物。我试过一些我认为有效的方法,但是没有。例如,当它被发送回后台页面时,其内容为未定义: messages = new XMLSerializer().serializeToString(document); sendResponse({messages: docum

我可以通过将其转换为字符串,然后按如下方式发送,使其在html中工作:

messages = document.getElementsByTagName("html")[0].outerHTML;
但是,我不知道这是什么xml等价物。我试过一些我认为有效的方法,但是没有。例如,当它被发送回后台页面时,其内容为未定义:

messages = new XMLSerializer().serializeToString(document);
sendResponse({messages: document});
此外,我无法通过以任何一种语言将其作为对象进行传递来实现它,我相信我可以在背景页面和内容脚本之间传递对象,因为存在以下问题:

例如,while
messages=document.getElementsByTagName(“html”)[0].outerHTML
工作正常,在xml或html中根本不起作用:
sendResponse({messages:document})

它将
response.messages
读取为未定义

    chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
    if (msg.text && (msg.text == "report_back_ls")) {
          //messages = document.getElementsByTagName("rss")[0];//

          //messages = new XMLSerializer().serializeToString(document);

          //var s = new XMLSerializer();
          //var str = s.serializeToString(document);
          //alert(str);


                    sendResponse({messages: document});
    }
});

如上所述,只能发送JSON可序列化对象。这就排除了DOM元素。你问题中的第二个代码也没有任何意义。XMLSerializer的结果未在实际消息中使用,因为在
{messages:document}
中,字符串
messages
表示键的文字名称,而不是变量。请参阅文字对象的Javascript语法。对不起,我应该解释一下,我用于测试XMLSerializer的代码是:chrome.runtime.onMessage.addListener(函数(msg,sender,sendResponse){if(msg.text&&(msg.text==“report\u back\u ls”){//messages=document.getElementsByTagName(“rss”)[0];////messages=new-XMLSerializer().serializeToString(文档);//var s=new-XMLSerializer();//var-str=s.serializeToString(文档);//警报(str);sendResponse({messages:messages});});非常感谢您指出这一点!我以为它要么是字符串,要么是所有对象,我忘了它只能是JSON可序列化对象,因为据说只能发送JSON可序列化对象。这就排除了DOM元素。你问题中的第二个代码也没有任何意义。XMLSerializer的结果未在实际消息中使用,因为在
{messages:document}
中,字符串
messages
表示键的文字名称,而不是变量。请参阅文字对象的Javascript语法。对不起,我应该解释一下,我用于测试XMLSerializer的代码是:chrome.runtime.onMessage.addListener(函数(msg,sender,sendResponse){if(msg.text&&(msg.text==“report\u back\u ls”){//messages=document.getElementsByTagName(“rss”)[0];////messages=new-XMLSerializer().serializeToString(文档);//var s=new-XMLSerializer();//var-str=s.serializeToString(文档);//警报(str);sendResponse({messages:messages});});非常感谢您指出这一点!我以为它要么是字符串,要么是所有对象,我忘了它只能是JSON可序列化对象