Sto sviluppando un'applicazione web con molto, molto javascript.
Però vorrei evitare di far scaricare tutto il codice se non è strettamente necessario, allora ho pensato ad una sottospecie di sistema di plugins.
Se l'utente richiede una funzionalità non presente nel framework di base, viene caricato il relativo plugin.
Per farlo uso questa funzione:
In pratica controllo prima che quello script non sia già caricato. Se non lo è, crea un tag script e lo accoda nella sezione "head" della pagina.codice:function loadJS(scriptName) { var isLoaded = false var scr = document.getElementsByTagName('script'); for (var i=0;i<scr.length;i++) { if (scr[i].getAttribute('src').indexOf(scriptName) != -1) { isLoaded = true; break; } } scr = null; if (!isLoaded) { scr = document.createElement('script'); scr.setAttribute('src','./js/'+scriptName); scr.setAttribute('language','javascript'); scr.setAttribute('type','text/javascript'); var head = document.getElementsByTagName('head')[0]; head.appendChild(scr); head = null; scr = null; } }
Ora per richiamare il tutto faccio:
Il tag script lo carica (se mostro l'output della sezione head il tag viene aggiunto) ma una volta arrivato alla funzione google_window() mi dice che la funzione non è definita. Questo perchè, suppongo, la chiamata a tale funzione avviene prima che il "plugin" sia totalmente caricato (infatti se richiamo la funzione una seconda volta, la esegue correttamente).codice:function _loadGoogle() { loadJS('google.js'); google_window(); // funzione presente nel file google.js }
C'è un modo per bloccare il flusso di istruzioni della funzione _loadGoogle() fino a quando il file google.js non sarà caricato completamente?


Rispondi quotando
)
