Autor | Zpráva | ||
---|---|---|---|
Vašek knihař Profil |
#1 · Zasláno: 16. 11. 2013, 12:34:39
Zdravím, nevím si rady s asynchroním načtením Javascriptu. Po načtení stránky načítám externí JS soubor, to funguje bez problému. Jenže se zpracuje úplně jako poslední, a já bych potřeboval potom provést kód ve zdrojovém souboru (na místě ZPRACUJ KOD). Jde to nějak? Problém je, že nemohu externí JS měnit. Mě napadá jen příkazy ze ZPRACUJ KOD dát do dalšího externího souboru.
Zdroj kostry kódu, asynchronní načtení JS <script type="text/javascript"> // Add a script element as a child of the body function downloadJSAtOnload() { // deklarace fce var element = document.createElement("script"); //vytvor element (tag) script element.type = "text/javascript"; //typ scriptu, nepovine element.src = "deferredfunctions.js"; // do elementu (mezi tagy) vloz obsah souboru document.body.appendChild(element); // narvy cely element do body ZPRACUJ KOD Z deferredfunctions.js // <- Dalsi prikazy tady se provedou uz pred nactenim souboru, kdy nejsou deklarovane!!! } // Check for browser support of event handling capability if (window.addEventListener) //pokud je list udalosti window.addEventListener("load", downloadJSAtOnload, false); //az nastane udalost v listu udalosti: load, volej else if (window.attachEvent) window.attachEvent("onload", downloadJSAtOnload); else window.onload = downloadJSAtOnload; </script> |
||
preca1 Profil |
#2 · Zasláno: 16. 11. 2013, 13:02:40
Zdravim,
na script elementu můžeš odchytávat událost load . Viz ukázka.
index.html: .<script>//tecka vytvori body console.log("existuje funkce a?", !!window.a); var element = document.createElement("script"); element.src = "js.js"; element.onload = function() { console.log("existuje funkce a?", !!window.a); } document.body.appendChild(element); console.log("existuje funkce a?", !!window.a); </script> function a() {} |
||
Chamurappi Profil |
#3 · Zasláno: 16. 11. 2013, 13:19:22
Reaguji na precu1:
Ve starším Exploreru se na elementu <script> nevyvolává onload , ale onreadystatechange .
Reaguji na Vaška knihaře: „Problém je, že nemohu externí JS měnit.“ A co v něm přesně je? Třeba by se dalo něco zevnitř využít. |
||
preca1 Profil |
#4 · Zasláno: 16. 11. 2013, 13:40:33
Chamurappi:
Zajímavý, dík. Postihuje to IE<9. A ještě k tomu je zřejmě potřeba kontrolovat, v jakym stavu je ona změna. |
||
_es Profil |
#5 · Zasláno: 16. 11. 2013, 14:10:19
Vašek knihař:
Akosi nechápem, aký má ten konkrétny kód praktický zmysel. Prečo nedáš jednoducho, s rovnakým účinkom, na koniec HTML kódu: <script src="deferredfunctions.js"></script> <script>Tu budú príkazy, ktoré sa vykonajú až po načítaní deferredfunctions.js.</script> |
||
Vašek knihař Profil |
Chamurappi:
Jedná se o seznam mapy, http://api4.mapy.cz/view?page=instruction _es: Protože stránka je skládaná ze šablon, chtěl jsem použít jednoduchý kód abych nemusel řešit, která se zrovna načítá. Bohužel to nefunguje |
||
_es Profil |
#7 · Zasláno: 17. 11. 2013, 17:20:12
|
||
Časová prodleva: 12 let
|
0