Autor Zpráva
Tomkinss
Profil
Zdravím,
Potreboval by som pomôcť s problémom v IE8.
Nefunguje mi tam JS zápis:

      msg = '<a href="test">ahoj</a>';
      var span = document.createElement('p');
      span.innerHTML = msg;
      document.getElementById('d_debug').appendChild(span);

V iných moderných prehliadačoch problém nemám (Aj v IE9 to funguje). Čítal som, že InnerHTML IE8 nepodporuje a že to mam nahradiť document.write() ale čo som aj skúšal ale nejak sa mi to nepodarilo.

Bol by som naozaj vdačný tomu, kto by mi s týmto problémom pomohol.
Chamurappi
Profil
Reaguji na Tomkinsse:
Čítal som, že InnerHTML IE8 nepodporuje
Kde? Explorer kdysi dávno innerHTML vymyslel.

Chybová konzole nic nehlásí?
Je opravdu problém s innerHTML? Nebo s appendChild?
Element s id="d_debug" je co? Jestli je to odstavec, tak je problém v tom, že nemůžeš strčit odstavec do odstavce.
Pokud jsem se netrefil, prosím o odkaz na živou ukázku.
_es
Profil
Tomkinss:
msg je niekde definované? ( Časté potíže, zajímavosti a poučné debaty » Používejte var)
peta
Profil
_es:
???
msg = '<a href="test">ahoj</a>';
To bohate staci na to, aby msg dostalo nejakou hodnotu, pokud neni msg definovane nekde jinde treba jako funkce.

Tomkinss:
To neni kod, ktery mi staci zkopirovat do souboru a spustit. Neobsahuje element s id='d_debug', napr.
Po uprave na tento kod mi hlasi konzola v ie (shift+f12, f5) chybu
SCRIPT5007: Nelze načíst hodnotu vlastnosti appendChild: Objekt má hodnotu Null nebo není definován.
<div id='d_debug'></div>
<script>
msg = '<a href="test">ahoj</a>';
var span = document.createElement('p');
span.innerHTML = msg;
document.getElementById('d_debug').appendChild(span);
</script>
Doplnil jsem jeste body a uz to funguje. Aspon mi. Nevim, jaky kod mas presne ty, ze ti do
nejde.
<body>
<div id='d_debug'></div>
<script>
msg = '<a href="test">ahoj</a>';
var span = document.createElement('p');
span.innerHTML = msg;
alert(document.getElementById('d_debug')) // a tez alert, ktery pouzivam pro testovani pri ladeni, kdyz neco nejede
document.getElementById('d_debug').appendChild(span);
</script>
</body>

Chamurappi:
??? A odstavec do odstavce lze strcit i v IE
<body>
<p id='d_debug'></p>
<script>
msg = '<a href="test">ahoj</a>';
var span = document.createElement('p');
span.innerHTML = msg;
alert(document.getElementById('d_debug'))
document.getElementById('d_debug').appendChild(span);
</script>
</body>
_es
Profil
peta:
To bohate staci na to, aby msg dostalo nejakou hodnotu, pokud neni msg definovane nekde jinde treba jako funkce.
To „bohato stačí“ na to, aby to v IE „nefungovalo“, ak sa v dokumente nachádza niečo s id="msg" alebo s name="msg". Ak by bolo msg definované ako funkcia, tak by to fungovalo.
peta
Profil
Moderátor Chamurappi: Vyhozeno … a vráceno.

_es:
"To „bohato stačí“ na to, aby to v IE „nefungovalo“"
Oba priklady, co jsem poslal, nemaji var msg; a funguji mi v IE9 a v IE9 rezim IE8. Kdyz to funguje, tak nechapu, proc tvrdis, ze ne. Ale u MS je mozne vsechno, ruzna verze IE, win, nastaveni... Staci zmenit malickost a MS se sype...
Moderátor Chamurappi: Přečti si pořádně, co ti píše, a neplevel.
_es
Profil
peta:
nemaji var msg; a funguji mi v IE9 a v IE9 rezim IE8
Čo si tak príspevok najprv poriadne prečítať, než zareaguješ? (_es:„ak sa v dokumente nachádza niečo s id="msg" alebo s name="msg"“)
V akej verzii IE a s akým „nastavením“ ti funguje toto?:
<!doctype html>
<div id=x>x</div>
<script>
x=1;alert(x)
</script>
peta
Profil
OT: "pokud neni msg definovane nekde jinde" (peta)
To jsem psal, ne? Kdyz ho definujes jako neco jineho, tak to nepojede, to je pomerne logicke.
jinak souhlasim s tim, aby to bylo smazane. Ale tez by mohl ten ES priklad zustat, to je dobra ukazka. Tu ukazku s funkci se mi nechtelo vytvaret.
_es
Profil
peta:
Tu ukazku s funkci se mi nechtelo vytvaret.“ „Kdyz ho definujes jako neco jineho, tak to nepojede, to je pomerne logicke.
<!doctype html>
<div id=x>x</div>
<script>
function x(){}
x=1;alert(x)
</script>
bude fungovať aj v IE, teda je to presne naopak ako si písal - pri definícii „inde“, či „definovaní ako niečoho iného“, tento problém nevznikne.
Tomkinss
Profil
Vyhadzovalo mi neznámu chybu na riadku v ktorom bol createElement.
Vyriešil som to tak, že som všetok javascript nahradil jquery a už to funguje aj v IE8.
Chamurappi
Profil
Reaguji na Tomkinsse:
To není řešení popsaného problému.
_es
Profil
Tomkinss:
Vyhadzovalo mi neznámu chybu
To je aká, tá „neznáma“ chyba?
Tomkinss
Profil
Neviem aka bola ta neznama chyba, Debag v IE mi vypísal "Neznáma chyba na riadku 307 znak 7". Keď som na to klikol, označil sa mi riadok v ktorom bolo:
var span = document.createElement('p');
joe
Profil
Tomkinss:
var span = document.createElement('p');
IE má asi umělou inteligenci a správně ti nedovolí vecpat odstavec do spanu :-)

Vyriešil som to tak, že som všetok javascript nahradil jquery a už to funguje aj v IE8.
Možná ti to funguje, ale není to řešení, je to obejití problému.
Tomkinss
Profil
joe:
vkladám do div-ka, span je len premenná.
_es
Profil
Tomkinss:
Keď som na to klikol, označil sa mi riadok v ktorom bolo:
var span = document.createElement('p');
Vyvolal uvedený príkaz chybu? Nevyvolal chybu predchádzajúci príkaz? Chcelo by to „živú“ ukážku.

som všetok javascript nahradil jquery
Časté potíže, zajímavosti a poučné debaty » Co vlastně je jQuery?
peta
Profil
joe: Ale, to uz jsem preci jednou dokazal chamurapimu, ze to jde, viz [#4].
Tomkinss [#4] Ten kod dole, tak, jak je, kdyz zkopirujes do cisteho souboru, tak mi fungoval. Nebylo zapotrebi to resit pres jquery.
Je mozne, ze IE je citlivy na doctype a neuznava P ve SPAN. Bez doctype, viz muj kod, mi to jede. Je mozne, ze s doctype neuznava mala pismena pro create element p a P je povazuje za rozdil. Ale oboji je tip do vetru, testovat to nejdu. Pro mne to hasne. Kod, ktery jsem poslal, funguje. Doctype jsi neuvedl, tak jsem ho nemusel zahrnout do testovani.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: