0

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 模式。

4

2 回答 2

2

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

http://jsbin.com/izemop/1/ 请参阅此示例,该示例使用实际文档中的 div 并由 DOM 获取getElementById。你得到相同的结果。

于 2013-06-04T20:23:22.693 回答
2

相对于javascript引擎。作为需要时的简单解决方法,您可以使用 $.trim() 函数:

var myDiv = $('<div/>');
alert('myDiv[0].outerHTML="' + $.trim(myDiv[0].outerHTML) + '"');
于 2013-06-04T20:25:12.240 回答