我正在使用DOMParser来解析一些内容,对它做一些更改并将其转换回HTML。令人惊讶的是,如果innerHTML是脚本标记,则它不会显示第一个元素。所以,像
var x = new DOMParser().parseFromString('<script>var x;</script>', 'text/html').body.innerHTML
结果x
是一个空字符串。
在这里查看更详细的示例:https://jsbin.com/jotukabace/edit?html,js,output
为什么会这样?
它进入了<head>
,而不是<body>
,如果您在浏览器中打开仅包含该HTML的文档,则可以在DOM中找到该脚本。
var doc = new DOMParser().parseFromString('<script>var x;<\/script>', 'text/html');
console.log(doc.head.innerHTML);
(在<head>
出现之前,任何可以进入<head>
的东西都有.Relevant part of the spec)