我刚刚看到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);
}
使用p.innerHTML = 'x<style>' + cssText + '</style>';
的地方。为什么在这里使用 x ?
答案 0 :(得分:3)
不,这不是一个错字。
根据question about x aFarkas 已回答
这是因为旧IE的非标准概念。类似于&#34;的概念有布局&#34;在CSS中,他们使用scoped和非cococoped元素的概念来使用innerHTML进行渲染。
当IE将HTML字符串转换为DOM结构时,它会以不同于任何其他标记的方式处理SCRIPT和STYLE。当它命中一个时,它会检查它前面是否有任何“可见”的节点。(可见非常松散意味着在渲染结构时将显示的节点。)如果在命中之前没有任何可见节点SCRIPT或STYLE,它只是将它们扔掉并继续处理。