Javascript 这是HTML5中的输入错误吗?

Javascript 这是HTML5中的输入错误吗?,javascript,Javascript,我刚刚看到html5shiv,发现了以下代码: function addStyleSheet(ownerDocument, cssText) { var p = ownerDocument.createElement('p'), parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; p.innerHTML = 'x<style>

我刚刚看到html5shiv,发现了以下代码:

function addStyleSheet(ownerDocument, cssText) {
    var p = ownerDocument.createElement('p'),
        parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;

    p.innerHTML = 'x<style>' + cssText + '</style>';
    return parent.insertBefore(p.lastChild, parent.firstChild);
  }
function addStyleSheet(ownerDocument,cssText){
var p=ownerDocument.createElement('p'),
parent=ownerDocument.getElementsByTagName('head')[0]| | ownerDocument.documentElement;
p、 innerHTML='x'+cssText+'';
返回parent.insertBefore(p.lastChild,parent.firstChild);
}

其中
p.innerHTML='x'+cssText+''被使用。为什么这里使用x

不,这不是打字错误

根据的说法,阿法克斯已经做出了回答

这是因为旧IE的一个非标准概念。与CSS中的“has layout”概念类似,他们有使用innerHTML呈现的作用域和非作用域元素的概念

阿法卡斯指出了两篇文章
问题 当IE将HTML字符串转换为DOM结构时,它对脚本和样式的处理方式与任何其他标记不同。当它点击一个节点时,它会检查它之前是否有任何节点是“可见的”。(可见非常松散地表示在呈现结构时将显示的节点。)如果在点击脚本或样式之前没有任何可见节点,它只会将其丢弃并继续处理


如果你移除它会发生什么?如果我移除它,它似乎不起作用。(旧浏览器不支持html5元素)我认为这与
X-UA-Compatible
有关?我不确定,但认为可能是因为怪癖模式…注意
p
没有插入到
parent
,而是插入了
p.lastChild
(即,仅插入
标记,而不是
X
文本)。这似乎是在处理一些奇怪的浏览器怪癖,
innerHTML
不能只处理
元素,而是需要在它前面添加一些其他文本。