Caricare dinamicamente un file js

mercoledì 13 giugno 2012 - 12.02
Tag Elenco Tags  C#  |  .NET 3.5  |  Javascript

volperubbia Profilo | Senior Member

Ciao a tutti,
sapete se esiste un modo per caricare dinamicamente e "realmente" un file .js
via codice JavaScript?

<script type="text/javascript">
var file = document.createElement("script");
file.setAttribute("type", "text/javascript");
file.setAttribute("src", "jquery.js");
document.getElementsByTagName("head")[0].appendChild(file);

if ((typeof (jQuery)) != "undefined") {
// DI QUI NON PASSA
};
</script>

Il problema qui è che appendChild non carica realmente il .js e dall'if successivo non passa.
Avrei bisogno di qualcosa di analogo a <script type="text/javascript" src="jquery.js"></script>.

Qualche idea?
Grazie mille, Davide

luigidibiasi Profilo | Guru

ho provato il codice è funziona
che vuoi dire con Realmente?
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

volperubbia Profilo | Senior Member

Ciao Luigi, grazie.
Intendevo dire che ... non entra poi dentro il blocco if.

Così funziona:

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
if ((typeof (jQuery)) != "undefined") {
alert("jQuery"); // DI QUI PASSA
};
</script>

Così non funziona:

<script type="text/javascript">
var file = document.createElement("script");
file.setAttribute("type", "text/javascript");
file.setAttribute("src", "jquery.js");
document.getElementsByTagName("head")[0].appendChild(file);
if ((typeof (jQuery)) != "undefined") {
alert("jQuery"); // DI QUI NON PASSA
};
</script>

quindi penso non carica correttamente jquery (è un esempio, potevo farlo anche con altri .js).
Se però alert("jQuery") lo sposto dentro jquery.js, funzionano entrambi i casi. Possibile faccia sto scherzo solo con determinati oggetti e non con le funzioni?

Davide

luigidibiasi Profilo | Guru

bhe credo il problema nasca dal fatto che carichi a runtime il file .js
mentre carica il file (e lo fa in modalità asincrona) passa immediatamente a valutare l'if...
non è che aspetta che il file venga caricato ... la funzione appendChild non è bloccante...

quindi, ricapitolando, manda il file js in caricamento e ti valuta l'if e dunque lo trova sempre falso...

una soluzione la trovi qua:
http://www.dibiasi.it/devp/xalp/index.htm

si usano le callback per fare queste cose...
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5