JavaScript serializeToString()自动添加属性

时间:2018-03-25 23:15:58

标签: javascript object dom

我有以下HTML代码,我使用serializeToString()再次转换为文档对象然后再转换为字符串:



    let html = `<!DOCTYPE html>
    <html>
    	<head>
    		<title>Title</title>
    	</head>
    	<body>Hello
    	</body>
    </html>`;
    
    let newHTMLDocument = new DOMParser().parseFromString( html, 'text/html' );
    
    let head = new XMLSerializer().serializeToString(newHTMLDocument.head);
    
    console.log(head);
&#13;
&#13;
&#13;

为什么头部包含:

<head xmlns="http://www.w3.org/1999/xhtml">
        <title>Title</title>
    </head>

如您所见,xmlns =&#34; http://www.w3.org/1999/xhtml"不是在原始字符串中,为什么serializeToString()将其添加到我的head标签中,如何阻止该函数执行此操作,因此head变量包含此字符串:

<head>
        <title>Title</title>
    </head>

1 个答案:

答案 0 :(得分:1)

来自XHTML spec,第3.1.1节:

  

文档的根元素必须包含xmlns声明   XHTML名称空间[XMLNS]。 XHTML的命名空间定义为   http://www.w3.org/1999/xhtml。示例根元素可能如下所示:   <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

所以,它只是遵守标准。

要在没有序列化程序的情况下转换为文本,请执行以下操作:

&#13;
&#13;
let html = `<!DOCTYPE html>
<html>
	<head>
		<title>Title</title>
	</head>
	<body>Hello
	</body>
</html>`;

let newHTMLDocument = new DOMParser().parseFromString( html, 'text/html' );

console.log(newHTMLDocument.head.outerHTML);
&#13;
&#13;
&#13;