[ bzero @ 15.08.2006. 15:25 ] @
Imam ovaj HTML:
Code:

<html>
<head>
<title>whitespace test</title>
<script type="text/javascript">
function gettext(item) {
    var textnode = item.firstChild;

    alert("text: " + textnode.data + "\nlength: " + textnode.data.length);
    alert("innerHTML: " + item.innerHTML + "\ninnerHTML length: " + item.innerHTML.length);
}
</script>
</head>
<body>
<div style="white-space: pre" onclick="gettext(this)">a   b</div>
</body>
</html>


Stvar je prosta, imam jedan div i treba da uzmem tekst koji se nalazi u njemu. Problem je sto ovo radi u Firefoxu i Operi, a naravno u Exploreru ne radi kako treba. Naime, text koji se nalazi u div-u je: a[space][space][space]b.
FF i Opera i za data textNoda i za innerHTML, korektno daju slova a i b sa tri spejsa izmedju, sto je ukupna duzina 5 karaktera, dok IE u oba slucaja vraca a i b sa jednim razmakom izmedju, odnosno string duzine 3 karaktera.
Jel imao neko slican problem?
[ bzero @ 15.08.2006. 15:33 ] @
U medjuvremenu sam izgleda nasao resenje.
Ukoliko se pre ispisa u HTML spejsovi zamene sa &nbsp; item.firstChild.data ce da radi korektno u sva tri browsera.
[ Br@nkoR @ 15.08.2006. 15:52 ] @
Ili dodaj DOCTYPE
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>whitespace test</title>
<script type="text/javascript">
function gettext(item) {
    var textnode = item.firstChild;

    alert("text: " + textnode.data + "\nlength: " + textnode.data.length);
    alert("innerHTML: " + item.innerHTML + "\ninnerHTML length: " + item.innerHTML.length);
}
</script>
</head>
<body>
<div style="white-space: pre" onclick="gettext(this)">a   b</div>
</body>
</html>
[ bzero @ 15.08.2006. 16:14 ] @
Citat:
Br@nkoR: Ili dodaj DOCTYPE


Tnx, radi i tako.