如果 DOMParser innerHTML 是脚本,则不显示第一个元素

DOMParse innerHTML does not show first element if it is a script

我正在使用 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>,如果您打开一个仅包含 [=26] 的文档,您会在 DOM 中找到脚本=] 在浏览器中。

var doc = new DOMParser().parseFromString('<script>var x;<\/script>', 'text/html');
console.log(doc.head.innerHTML);

(在出现 <head> 之前,任何可以进入 <head> 的东西都可以。Relevant part of the spec