我的HTML看起来像这样:
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="jQuery.js"></script>
<script type="text/javascript">
function init()
{
var text = jQuery('body').text();
alert('length = ' + text.length);
}
</script>
</head>
<body onload="init()">0123456789</body>
</html>
当我在Firefox中加载它时,长度报告为10.然而,在Chrome中它是11,因为它认为在'9'之后有一个换行符。在IE中它也是11,但最后一个角色是逃脱。同时,Opera认为有12个字符,最后两个是CR LF。
如果我将body元素更改为包含span:
<body onload="init()"><span>0123456789</span></body>
和jQuery调用:
var text = jQuery('body span').text();
然后所有浏览器都同意长度为10。
显然,这是导致问题的身体元素,但任何人都可以解释为什么会发生这种情况?我特别惊讶,因为优秀的jQuery通常与浏览器无关。
答案 0 :(得分:2)
Opera在BODY或HTML关闭标记之后接受换行符,并将它们添加到BODY内容AFAIK中。这可能是额外CR LF的来源。
答案 1 :(得分:1)
由于不同浏览器的行为方式不同,我建议:
jQuery('iframe').contents().find('body').text().trim();
这应该产生一致的结果。
答案 2 :(得分:1)
其中一些可能与浏览器将文本放在HTML外部的文本或HTML之外的文本的不同行为有关。如果自HTML5解析器登陆以来Firefox的夜晚发生了变化,那就不会让我感到惊讶。