为什么jquery在IE7和IE8中新创建的元素中添加CR-LF ?



JQuery将在IE7和IE8中新创建的JQuery元素的开头添加回车和换行字符。发生了什么事?

使用JQuery 1.9.1版本的代码:

var myDiv = $('<div>');
alert('myDiv[0].outerHTML="' + myDiv[0].outerHTML + '"');

在IE8或IE7中执行时的输出结果:

"
myDiv[0].outerHTML=<div></div>"

您可以在此jsbin示例中进行复制,但请记住使用IE8或IE7模式。

与jquery无关,我可以告诉你这么多。它是底层JS引擎以及它如何处理事物。我的猜测是outerHTML产品的HTML片段和IE7/8创建那些与换行符。由于根据规范,标签之间的空白没有考虑到文档流,如何实际生成HTML——即有或没有前导换行符;使用或不使用标签缩进等——实际上是由每个浏览器指定的。

http://jsbin.com/izemop/1/这个例子使用了实际文档中的div,并由DOM的getElementById获取。您将得到相同的结果。

相对于javascript引擎。如果需要,可以使用$.trim()函数:

var myDiv = $('<div/>');
alert('myDiv[0].outerHTML="' + $.trim(myDiv[0].outerHTML) + '"');

最新更新