(An earlier copy of this is stuck in the moderator queue and can be deleted;
there's more detail in this version.)
I've noticed several minor differences with the .text() method across
browsers. For example, given this (note the space around two):
<div id="test">
<div >one</div>
<div> two </div>
</div>
function check(m,s) {
if ( s == null ) return;
var r = "'";
for ( var i=0; i < s.length; i++ ) {
var c = s.charCodeAt(i);
r += c > 0x20? s.charAt(i) : "{"+c+"}";
}
alert(m+": "+r+"' "+s.length);
}
var t = $("#test");
check(".text()",t.text());
check(".innerText", t[0].innerText);
check(".textContent", t[0].textContent);
Here are the results of .text versus the native text methods on the DOM
element:
IE6/IE7:
.text() 'onetwo{32}' 7
.innerText 'one{13}{10}two{32}' 9
Firefox 1.5:
.text() '{10}{32}{32}one{10}{32}{32}{32}two{32}{10}' 15
.textContent '{10}{32}{32}one{10}{32}{32}{32}two{32}{10}' 15
Opera 9.02
.text() '{10}{32}{32}one{10}{32}{32}{32}two{32}{10}' 15
.innerText '{10}{32}{32}one{10}{32}{32}{32}two{32}{10}' 15
.textContent '{10}{32}{32}one{10}{32}{32}{32}two{32}{10}' 15
Are most people using .text() in situations where these differences don't
matter? The current IE behavior with .text() (no space between elements) can
be annoying. In some situations I have seen Opera act more like IE and leave
no space between text. I don't have a Mac to check Safari, does it use {13}
instead of {10} perhaps?
A quick test showed it's about 60% faster in IE and 25% faster in
Firefox/Opera to use the builtin .innerText/.textContent properties for HTML
documents; I guess the tree crawl needs to stay for XML? I think it would be
worthwhile to trim leading/trailing whitespace, but am inclined to leave the
imbedded spaces alone. Does anyone depend on the current behavior?
_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/