我刚刚看到了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?
发布于 2014-07-23 20:49:21
不,这不是打字错误。
关于x的问题 aFarkas给出了答案
这是因为旧IE的非标准概念。类似于CSS中的“有布局”的概念,他们有用innerHTML渲染的作用域元素和非作用域元素的概念。
aFarkas指出了两篇文章
问题所在
当IE将HTML字符串转换为DOM结构时,它对脚本和样式的处理方式与任何其他标记都不一样。当它命中一个节点时,它会检查它前面是否有“可见的”节点。(可见非常松散地表示在呈现结构时将显示的节点。)如果在点击脚本或样式之前没有任何可见的节点,它只会丢弃这些节点并继续处理。
https://stackoverflow.com/questions/24905871
复制相似问题