Newsgroup: it.comp.lang.javascript
Titolo: [DHTML] Dynamic loading of JavaScript code

I need to open a page that should execute a script. However it should not
always execute the same script. So I pass the JS filename through the query
section of URL in a link. For example
<A HREF="myPage.html?aScript.js">a Script</A>
Easy, but... How do I call dynamically that script? I need something like
<SCRIPT>
aFunctionCall( bla, bla, bla) ;
loadScript( parseQuery( ) ) ;
anotherFunctionCall( bla, bla, bla) ;
</SCRIPT>
where parseQuery() is a function that I wrote to retrieve the filename from
URL. What I need is loadScript!!!! Is that feasible?
--
* Who wants to live forever, when love must die? *
Dario de Judicibus, Roma, Italia - eFax: 
+1.954.212.2754
 - ICQ: 25257587
eMail: 
d...@mclink.it
 Pages: 
http://www.geocities.com/~dejudicibus/
Photo Gallery: 
http://www.geocities.com/~dejudicibus/gallery/index.html
Dictionary Program: 
http://members.xoom.com/dizi/

 wrote in message
7unpjg$1ap$1...@news.mclink.it...


...
|<script language = "javascript">
|function loadScript(NomeFile)
|{
|document.write("<script src = '" + NomeFile + "'></s" + "cript>");
|}
|</script>
Scusa l'inglese, ma il messaggio è andato anche in un paio di NG USA e
quindi l'ho scritto una sola volta per tutte. Il mio problema non è come
passare il nome del file, ma come eseguirlo. Quello che hai scritto te non
funzoiona, perchè l'istruzione generata dalla document.write non viene
interpretata ed eseguita. Non riesco a trovare un modo di eseguire un JS
dall'interno di un altro pezzo di codice javascript.



Crea un frame nascosto e mettici dentro gli scripts così:
parent.frames['nascosto'].document.write("<html><script
src='"+SCRIPTNAME+"'><\/script>"......</html>);
parent.frames['nascosto'].document.close();
Per accedere a funzioni e oggetti nel nuovo file caricato usa:
    parent.frames['nascosto'].MiaFunzione()
else crea un puntatore alle nuove funzioni:
    fPtr=parent.frames['nascosto'].MiaFunzione
ed eseguile così:
    fPtr(param,param1,....)
Script testato e perfettamente funzionante.
:)
In bocca al lupo.
CiaooooooooooooooooooooooooooooooooaiC.
                                      by
-------------------------------------------------------------------
     Ðarius. <- 
www.infotronica.it/darius
 ->
                 ICQ# 36150792
      - Art of JavaS.™ - 
www.probo.it/aoj
-------------------------------------------------------------------

...
|Crea un frame nascosto e mettici dentro gli scripts così:
No, aspetta, non mi sono spiegato. Lo scopo di quello che faccio è proprio
per evitare di caricare TUTTI gli script in una volta sola. Altrimenti non
serve a niente, potrei mettere tutti gli script in un solo js e sarei a
posto.


posto.
Hmmmm... allora forse non mi sono spiegato io...
:)
function caricaScriptDinamicamente(NomeScript)
{
    parent.frames['nascosto'].document.write("<html><script
src='"+NomeScript +"'><\/script></html>");
    parent.frames['nascosto'].document.close();
}
Così in qualunque momento tu puoi caricare lo script semplicemente
scrivendo:
    caricaScriptDinamicamente("abc.js")
    caricaScriptDinamicamente("ciao.js")
e appena caricati puoi già accedervi...


...
|    parent.frames['nascosto'].document.close();
Scusa se ti faccio una domanda forse per te banale, ma non sono un esperto
di JavaScript, anche se sto imparando un po' di trucchetti interessanti.
Come lo creo un frame nascosto? In <FRAME> non c'è una opzione di
visibilità. Devo usare un CSS? Mi serve qualcosa che funzioni sia in IE che
in NS, e magari anche in altri
browsers ;-). Grazie.


 wrote in message
7v4t8v$3oo$1...@news.mclink.it...


...
|Ciao,
|
|Beh, in compenso sei un esperto di XML ;) Per il frame nascosto basta
creare
|un frame con larghezza o altezza uguale a 0 ;)
Fatto ma non funziona lo stesso. Boh...
P.S. La prima cosa che ho imparato quando ho iniziato a lavorare con
l'informatica nel lontano 1978 è che gli esperti sono quelli che hanno ben
chiaro tutto ciò che NON sanno. La seconda è che fai prima a dimenticarle le
cose che ad impararle. La terza e che comunque non vale la pena di
ricordarle tanto cambiano. E la quarta è che passerai la vita a studiare....
;-)
