Autor Zpráva
weroro
Profil
Ahoj,

dnes mi z ničoho nič prestalo vykonávať v IE7 (novší nemám) javascript, konkrétne sa mi nedá zacieliť na element s ID (triedy ani priamo element som neskúšal) bez toho aby v tom elemente už pred tým niečo bolo zapísané.

Tu je ukážka http://temp.weroro.sk/jpw/iefail.html

V IE sa mi nezobrazí ten text, ktorý vkladám pomocou innerHTML, pokiaľ je ten span prázdny. Keď si dám alertnúť iba čistý document.getElementById('idecko'), tak mi vypisuje null. Nemenil som žiadne nastavenia v IE, reštartoval som aj systém, neaktualizoval som. Mám windows XP.

Pokiaľ je to napr. takto <span id="idecko">a</span>, tak sa mi ten obsah prepíše ale ak je to prázdne, tak sa nevykoná nič. Viete prosím poradiť?


Takže po nejakých ďalších pokusoch, som zistil, že ak je pred tým span iný element, tak to funguje. Dokonca som to skúsil hodiť do setIntervalu a vtedy to tiež fungovalo. Mohol by mi niekto ozrejmiť toto chovanie? Nikdy pred tým som sa s tým v IE7 nestretol.
Chamurappi
Profil
Reaguji na werora:
Starší Explorer umí zaváhat při automatickém vytváření <body> a toto je jeden z projevů. Prázdný <span> si zapamatuje a chvíli předstírá, jako kdyby neexistoval — takže tvůj element <script> dá do <head> a hned ho spustí. V tu chvíli neexistuje ani document.body, ani nic s id="idecko". Po skončení skriptu se teprve vyrobí <body> a do něj se dá <span>.

Pravděpodobně toto chování někdy něčemu prospívalo, protože to není chyba typu „jejda, tady jsme něco přehlédli“. Je to tedy úmyslná imunitní reakce parseru při čtení vnitřku <head> (která je v rozporu se specifikací, ale to nikoho netrápilo, jelikož skoro nikdo nevěděl, že se smí značka <body> vynechat).

Pomůže napsat ručně počáteční značku <body>. Nebo dát do <span>u třeba <br>, nebo nějaký text (což už jsi zjistil).

Vaše odpověď

Mohlo by se hodit

Nezapomeňte na odkaz na živou ukázku problému.

Prosím používejte diakritiku a interpunkci.

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