Javascript jQuery(';body';).text()在不同的浏览器中给出不同的答案

Javascript jQuery(';body';).text()在不同的浏览器中给出不同的答案,javascript,jquery,firefox,google-chrome,opera,Javascript,Jquery,Firefox,Google Chrome,Opera,我的HTML如下所示: <html> <head> <title>Test</title> <script type="text/javascript" src="jQuery.js"></script> <script type="text/javascript"> function init() { var text = jQuery('body').te

我的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>
然后所有浏览器都同意长度为10


显然是身体因素导致了这个问题,但是有人能解释为什么会发生这种情况吗?我特别惊讶,因为优秀的jQuery通常是独立于浏览器的。

由于不同浏览器的行为方式不同,我建议:

jQuery('iframe').contents().find('body').text().trim();

这应该会产生一致的结果。

由于不同浏览器的行为方式不同,我建议:

jQuery('iframe').contents().find('body').text().trim();

这应该会产生一致的结果。

其中一些可能与浏览器将文本放在正文外但放在HTML内或HTML外的不同行为有关。如果HTML5解析器登陆后Firefox nightlies中的情况发生了变化,我也不会感到惊讶。

这可能与浏览器将文本放在正文外但放在HTML内或HTML外的不同行为有关。如果HTML5解析器登陆后Firefox夜间版中的情况有所改变,我也不会感到惊讶。

Opera会在BODY或HTML close标记后添加新行,并将它们添加到BODY contents AFAIK中。这可能就是额外的CR LF的来源。

Opera在BODY或HTML close标记后添加新行,并将它们添加到BODY contents AFAIK中。这可能就是额外的CR LF的来源。

在我看来,你已经完美地解释了发生的事情。如果你认为Chrome有一个bug,也许你应该将它提交给Chrome开发团队。我不知道这是一个Chrome bug,还是我没有预料到的正确行为。简而言之,这就是为什么我在StackOverflow上发布了一个问题。在我看来,你已经完美地解释了发生的事情。如果你认为Chrome有一个bug,也许你应该将它提交给Chrome开发团队。我不知道这是Chrome bug,还是我没有预料到的正确行为。简言之,这就是为什么我在StackOverflow上发布了一个问题。好主意,在这种情况下它是有效的。但是,如果我的意思是在最后有空格呢?请注意,这个答案中的示例代码是对这个问题的早期版本的响应,但是这个建议仍然有效。好主意,它在这种情况下有效。但是,如果我的意思是在最后有空格呢?请注意,这个答案中的示例代码是对这个问题的早期版本的响应,但是这个建议仍然有效。
jQuery('iframe').contents().find('body').text().trim();