Newsgroup: it.comp.lang.javascript
Titolo: javascript nidificati: si può?

Vorrei sapere una cosa: è possibile con javascript scrivere routines
nidificate?
So che si può fare riferimento ad una file esterno ad una pagina HTML con
<SCRIPT type="text/javascript" src="nomefile.js">; ma è possibile,
all'interno del file "nomefile.js", fare riferimento ad un secondo file
"nomesecondofile.js" dove vengono definite function, assegnati valiri a
variabili, ecc., che poi siano utilizzate da "nomefile.js"?
Se fosse possibile inserire, in un file *.js, l'analogo del tag <SCRIPT>, si
potrebbe scrivere un file 1.js, richiamato dai files 2.js e 3.js, a loro
volta richiamati dalle pagine html, sena dover riscrivere materialmente il
contenuto di 1.js in entrambi i file 2.js e 3.js, con conseguente risparmio
di spazio e di tempo di download per l'utente, soprattutto se 1.js è lungo.
Purtroppo ho il forte sospetto che non si possa fare, ma c'è qualcuno che
può darmi una risposta certa?
Grazie

 
Ti propongo uno stimolante esercizio.
Se scopri la password nascosta nella seguente pagina criptata allora 
significa che hai perfettamente capito il meccanismo di 
nidificazione:
http://digilander.libero.it/armageddon99/protected/protected2.htm
 
P.S: riservato ad utenti Windows IE.
bye
armaged

Fiuuu... ti sei divertito eh?
Grazie, mi sono divertito pure io :-)))
-- 
___________________________________________________________
a p bertolini
"Se Dio è perfetto, perché ha creato le funzioni discontinue?"
#ICQ: 10681264
(
www.webwarrior.org
)

 nidificazione:
Vorrei solo sapere se si può richiamare codice javascript all'interno di un
altro file con estensione js, a sua volta richiamato da un file html.
Se posibile, senza indovinelli...
Sì, o no?


si
--
a.cara 
Togli qualcosa dall'email


Ma cosa ti impedisce di includere i file separatamente?
pagina a.html
<script type="text/javascript" src="1.js"></script>
<script type="text/javascript" src="2.js"></script>
pagina b.html
<script type="text/javascript" src="1.js"></script>
<script type="text/javascript" src="3.js"></script>

 sě
E come?

 P.S: riservato ad utenti Windows IE.
E tanto per cambiare :)
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)


E se volessi fare, invece:
pagina a.html
...
<script type="text/javascript" src="1.js"></script>
...
pagina 1.js
....
<script type="text/javascript" src="0.js"></script> // il codice è
sbagliato, solo per capirci
...
pagina a.html
...
<script type="text/javascript" src="2.js"></script>
...
pagina 2.js
....
<script type="text/javascript" src="0.js"></script> // il codice è
sbagliato, solo per capirci
...
(supponiamo che 0.js sia lungo, per cui preferisco non inserire le sue righe
di codice in entrambi i files 1.js e 2.js per non appesantirli).
Si può fare? E come?
N.B. Voglio richiamare un *.js direttamente da un altro *.js, e non uno dopo
l'altro in una pagina *.htm o *.html.


E se volessi fare, invece:
pagina a.html
...
<script type="text/javascript" src="1.js"></script>
...
pagina 1.js
....
<script type="text/javascript" src="0.js"></script> // il codice è
sbagliato, solo per capirci
...
pagina a.html
...
<script type="text/javascript" src="2.js"></script>



E se volessi fare, invece:
pagina a.html
...
<script type="text/javascript" src="1.js"></script>
...
pagina 1.js
....
<script type="text/javascript" src="0.js"></script> // il codice è
sbagliato, solo per capirci
...
pagina a.html
...
<script type="text/javascript" src="2.js"></script>


 
Bravo, però, uhmm, potresti in realtà solo fingere di essere 
riuscito a decriptare la pagina... ;-)
Senza scriverla per esteso (a beneficio di chi vuole cimentarsi nel 
giuoco...), fammi capire con una frase sibillina quale è la password 
inserita all'interno del testo in chiaro.....
bye
armaged 

 inserita all'interno del testo in chiaro....
..intendi quella frase senza spazi, compresa tra due tag, che potrebbe dire
un supereroe?


Porca miseria, voi vi divertite, ma
SI PUÓ FARE O NO QUELLO CHE HO CHIESTO????????????????

 SI PUÓ FARE O NO QUELLO CHE HO CHIESTO????????????????
Io non stavo rispondendo al *tuo* post, ma a quello di armageddon.
Per quanto riguarda il tuo problema, mi pare che ti abbia gia' risposto lo
Scartabelli, al quale tu hai fatto un reply. Attendi pazientemente che ti
risponda, no?
E' un newsgroup, non e' un call center a pagamento questo.


 l'altro in una pagina *.htm o *.html.
Mah, la problematica è molto strana, mi unisco anch'io al "perché dovresti
farlo"?
Comunque secondo me potrebbe funzionare con un document.write("<scr"+"ipt
language='JavaScript' type='text/javascript' src='2.js'></scr"+"ipt>");
(ovviamente messo al posto giusto, studiando dove e quando farlo etc etc)
Non hai vantaggi IMHO, solo qualche rottura sia per il debug che per altro
(es. se fai il document.write e poi vuoi richiamare una function di 2.js non
so se funziona...)

 > N.B. Voglio richiamare un *.js direttamente da un altro *.js, e non
 > uno dopo l'altro in una pagina *.htm o *.html.
Questo l'ho capito, ma ti consigliavo di non farlo.
La tecnica potrebbe essere questa:
document.open('text/html');
document.write('<scr'+'ipt type="text/javascript" src="1.js"></scr'+'ipt>');
document.close();
(i tag sono spezzati perche' qualche browser li interpreterebbe "prima 
del dovuto". In realta' non mi sembra ci sia bisogno di spezzare sia 
l'apertura che la chiusura, ma non ricordandomelo te l'ho buttata cosi')
Svantaggi minori:
- inutile chiamata a tre metodi
- tutti gli engine di scripting portano a buon fine questa scrittura a 
runtime nel documento?
- tutti i browser fanno un corretto caching del file incluso in questa 
maniera (dovrebbero, in realta')?
Svantaggio grosso:
- come fai a sapere quando lo script in questione e' stato caricato 
completamente? Questa incertezza ti costringerebbe a rendere gli altri 
script "subordinati" ad esso.

 language='JavaScript' type='text/javascript' src='2.js'></scr"+"ipt>");
A questo punto, usciti da 1.js, il browser eseguirebbe necesariamente 2.js.
A che mi serve?
Io voglio alcune pagine html che richiamano 1.js, e altre 2.js (o l'uno o
l'altro), mentre entrambi i files 1.js e 2.js fanno riferimento a 0.js, che
quindi devono come prima cosa eseguire.
Certo, potrei fare qualcosa tipo:
pagina a.html
...
<script type="text/javascript" src="0.js"></script>
<script type="text/javascript" src="1.js"></script>
...
pagina b.html
...
<script type="text/javascript" src="0.js"></script>
<script type="text/javascript" src="2.js"></script>
Ma in questo modo dovrei cambiare TUTTI i files html che al momento
contengono solo l'istruzione <script type="text/javascript"
src="1.js"></script>, mentre preferirei operare solo su 1.js.

 <script type="text/javascript" src="0.js"></script>


Un bluff dici?
Buffone, ti crederai un SUPERDIO ma a me non mi fai un baffo :-)))
http://www.virtualconspiracy.com/index.php?page=scrdec/download
Oltre che, ovviamente, il debugger di windows e un artificioso uso di
Debug.write(document.body.innerHTML)


 Da quanto mi dici non sembra del tutto certo...
No, di questo sei certo: non avverra'. "0.js" sara' eseguito solo quando 
verra' caricato: quindi inglobi tutto quello che c'e' negli altri script 
in funzioni che richiami da "0.js".
Io insisto: con un qualunque editor di testo e un banalissimo 
find&replace ottieni quello che vuoi senza impazzire (e sporcare 
inutilmente gli altri script e la logica della pagina).

Ho provato, e non funziona. Non so se ho sbagliato qualcosa, ma allego
listato files:
------------------------
1.htm:
<HTML>
<HEAD>
<SCRIPT language="javascript" SRC="1.js">
<!--
//--></SCRIPT>
</HEAD>
<BODY>
Pagina 1
</BODY>
</HYML>
---------------------------
1.js:
a='pagina 1'
document.open('text/html');
document.write('<scr'+'ipt type="text/javascript" src="0.js"></scr'+'ipt>');
document.close();
prova(a)
--------------------------------------------
0.js
function prova(a0)
 {
  alert(a0)
 }

Scusa, non mi ero accorto che avevi già risposto.
La risposta alla mia domanda, quindi, mi sembra sia no...

Io credo che tu ti stia fasciando la testa per nulla.
Se lo script comunque chiama quell'altro, perché non includerlo? Sarà mica COSI' grosso?
Io ho un bel /shared/library.js con tutte le mie funzioni preferite ed è incluso in tutte le pagine, anche quelle che magari non ne
hanno bisogno (evento assai raro).
Il file viene conservato nella cache per un po' (almeno per la durata della sessione) quindi non credo generi troppo overhead di
connessione.
Anzi.
Avere più files significa più richieste da parte del browser, che alla fine è più lento!


 Buffone, ti crederai un SUPERDIO ma a me non mi fai un baffo :-)))
Grande,grande, risposta esatta... ;-)
bye
armaged 

> ...intendi quella frase senza spazi, compresa tra due tag, che 
potrebbe dire un supereroe?
o anche Berlusconi.... 
P.S: in effetti è un gioco per newbies, però utile per mostrare 
l'intrinseca fragilità di qualsivoglia sistema di oscuramento del 
codice USANDO JAVASCRIPT NIDIFICATI (lo scrivo in maiuscolo per 
Marco, così si incazza... ;-)
bye
armaged    

 Marco, così si incazza... ;-)
LOL ;)
