JavaScript:
Minulla on yhdellä sivulla kahteen kohtaan ladattu window.onload funktiolla tavaraa. IE moittii toista niistä. Näyttää, että virhe sivulla. Ilmoittaa, että ekamerkki ("w") kyseisellä rivillä ei kelpaa.
Muuten ohjelma toimii moitteettomasti. Kuinka nuo virhe-ilmoitukset saa pois?
Pekka Mansikka kirjoitti:
Minulla on yhdellä sivulla kahteen kohtaan ladattu window.onload funktiolla tavaraa.
Voisitko vähän selventää tätä? Jos vaikka näyttäisit kyseisen kohdan koodistasi, kun en tuosta ihan tajunnut.
Jos sinulla on handlerit ilmoitettu jotenkin seuraavasti
window.onload = teeJotain; ... window.onload = teeJotainMuuta;
, kannattanee muuttaa muotoon
var teeKaikkiJutut = function () { teeJotain(); teeJotainMuuta(); }; window.onload = teeKaikkiJutut;
Eihän tuon ensimmäisenkään version pitäisi virhettä antaa, mutta ei varmasti toimi niinkuin pitäisi. Mutta arvuutteluksi meni, laitahan koodia niin me muutkin ymmärrämme mistä kiikastaa :)
Kiitos!
Olgan neuvo tepsi!
Jos haluat jotain tapahtuvan heti kun sivu on ladattu, eikä vasta sitten kun aivan kaikki sivun tavara on ladattu (esim. kuvat, taustakuvat, muut lisätiedostot mukaanlukien), niin tässäpä tämmöinen "hieno" pätkä jolla asia hoituu IE:ssä, Firefoxissa, Safarissa kuin Operassakin:
<script type="text/javascript"> function init() { // lopeta funktio jos on jo suoritettu if (arguments.callee.done) return; // merkkaa funktio aiemmin suoritetuksi arguments.callee.done = true; // LISÄÄ HALUAMASI KOODIT TÄHÄN } // Internet Explorer /*@cc_on @*/ /*@if (@_win32) document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>"); var script = document.getElementById("__ie_onload"); script.onreadystatechange = function() { if (this.readyState == "complete") { init(); // call the onload handler } }; /*@end @*/ // Safari if (/WebKit/i.test(navigator.userAgent)) { // sniff var _timer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { clearInterval(_timer); init(); // call the onload handler } }, 10); } // Firefox and Opera 9 if (document.addEventListener) { document.addEventListener("DOMContentLoaded", init, false); } // selaimet jotka eivät tue mitään yllä olevasta window.onload = init; </script>
Ja tästä saatte kiittää Dean Edwardsia ja kumppaneita.
Käytännön ero siis on se, että JavaScriptit on voimassa jo ennen kuin sivu on ensimmäisen kerran renderöity, ei tule sitten mitään "jälkireagointeja" muutoksiin.
Kiitos...olen muuten tuota Edwarsin sivuakin tutkinut. Vaikutti tutulta. English ei ole vaan kunnolla hallussa. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.