Мой 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 обычно не зависит от браузера.