JAVASCRIPT
FAQ
No, Javascript non ha quasi nulla a che vedere con Java, se si esclude l'impostazione Object Oriented del linguaggio. Javascript è un linguaggio di programmazione interpretato che estende le potenzialità dell HTML, portando sul client tutta una serie di attività, come i controlli sui form ecc, che prima richiedevano l'invio dei dati sul server, l'esecuzione di CGI, la risposta ecc. In ultima analisi, nelle nuove versioni di Netscape, JS potrà interagire con eventuali applet Java. Javascript è molto più limitato di Java, non può ad esempio comunicare su di un socket, non ha la gestione di finestre, dell I/O ecc. Con JS non è possibile creare applicazioni stand alone al contrario di Java.
Le sfere di azione di Javascript sono:
OnFocus (quando il cursore
entra in un campo di input), OnClick, onSubmit ecc
Diamo per scontato che come comun denominatore si tenga, seppure nelle sue nuove versioni, Netscape 2. In realtà ATLAS, ovvero la versione 3 di Netscape, supporta anche la possibilità di aggiornare solo un'immagine, e molte altre funzioni Javascript che sulla versione 2 non girano. Ma implementarle sin da ora mi sembra una sciocca corsa in avanti, dato che ancora moltissimi devono passare alla versione 2.
Per cui non è possibile creare animazioni nel senso vero della parola. Javascript
agisce solo su una finestra od un frame intero. Non su aree di questo. Le alternative sono
appunto creare un piccolo frame e ricaricarlo N volte quanti sono i fotogrammi
dell'animazione. I risultati sono però deludenti, lo sfarfallio fastidioso. Oppure utilizzare GIF animati.
Qualcosa di simile alle animazioni è possibile creare utilizzando i caratteri del
browser, facendo scorrere per esempio delle scritte colorate ingrandite in un frame.
Con Javascript non è possibile aprire, salvare, in genere operare sui file, sia in locale che sul server, per ovvie ragioni di sicurezza.
Un'altra cosa che non sarà più possibile fare, a partire dai prossimi release di
Netscape, è accedere alla locazione dei documenti puntati dall'history del browser,
cioè sapere quali siti sono stati precedentemente visitati. Questo per ovvi motivi di privacy. Nè è possibile far inviare allo script messaggi di e-mail senza che
l'utente ne dia conferma.
Javascript gira su tutte le versioni di Netscape 2.0 che supportano i frame, comprese quelle per Windows 3.1 che non supportano invece Java.
Si, è possibile, ma conterà solo gli accessi dei browser che possono far girare Javascript stesso. Ed ha comunque bisogno di un programma CGI sul server per scrivere il file del contatore.
Si, bisogna inserire queste istruzioni in testa al documento. Chi supporta JS sarà automaticamente ruotato sul documento "js.htm". Gli altri potranno leggere il resto della pagina.
<script LANGUAGE="JavaScript">
<!-- Hide the code from all well-behaved non-JS browsers
location = 'js.htm'
// Unhide. -->
</script>
Oppure, richiamare il documento con un link del tipo:
<A HREF="NO_JS.htm" onClick="this.href='SI_JS.htm'">CLICCA QUI</A>Javascript eseguirà l'istruzione dell'event handler
onClick aprendo il documento "SI_JS.htm", gli altri browser otterranno invece "NO_JS.htm". (notate l' alternanza di apici singoli e virgolette)
In alcuni casi è possibile specificare due opzioni per uno stesso comando, di cui una
JS e l'altra normale. In questo caso il browser JS esegue prima quella JS e poi l'altra, il
browser non JS solo l'altra. Esistono comunque tutta una serie di istruzioni che si possono
tranquillamente inserire, vengono semplicemente ignorate dai browser non JS. Una di queste è
<a href="doc.htm" TARGET="_blank">che fa in modo di aprire una nuova pagina selezionando il link.
Javascript ha introdotto tutta una serie di event handlers per gestire eventi oltre il semplice click, abbinabili a campi di FORMS, link, pulsanti ecc.
Ad esempio abbinando l'event handler OnMouseOver ad un link, per chi ha JS, nel posizionare il mouse sopra il link appare una scritta nella Status Bar. Per tutti cliccando viene caricato un'altro documento (in questo caso questo stesso, HREF="#")
<A HREF="#" OnMouseOver='window.status="...CIAOOOOOOOOOOOOO!..."; return true'>CIAO!</a>
Una risposta esiste alla ottima FAQ su Javascript al sito Freqgrafx, che vi consiglio di salvare e leggere.
con un tag tipo:
<a HREF="javascript:parent.Nomex.location='doc1.htm';parent.Nomey.location='doc2.htm'">CliccaQui</a>dove
Nomex e Nomey corrispondono ai nomi dati ai frame nei tag:
<FRAME SRC="x.htm" name="Nomex"> <FRAME SRC="y.htm" name="Nomey">oppure definendo una funzione biClic() e richiamandola dall'HREF:
<SCRPT>
function biClic(){
parent.Nomex.location='doc1.htm';
parent.Nomey.location='doc2.htm';
}
</SCRIPT>
<A HREF='javascript:biClic()'>Clicca Qui</a>
Bloaded_sw" nel documento con i <FRAMESET>, lo stesso switch che ilo script in A va a testare ogni secondo.
documento con i FRAMESET:
<HTML> <script> var Bloaded_sw=0; </script> <FRAMESET> <FRAME SRC.........> ......ecc eccdocumento B:
<HTML>
<SCRIPT>
function Marcami(){
parent.Bloaded_sw=1;
}
</SCRIPT>
<BODY onLoad="Marcami()">
............ecc ecc.
documento A:
<HTML>
<SCRIPT>
function Fa_in_B(){
if (parent.Bloaded_sw !=0) {
fai_questo();
fai_quello()
}else{
setTimeout("Fa_in_b()",1000)}
}
</SCRIPT>
Si tratta di un bug noto. Con i FORM, ma in genere sempre con Javascript, bisogna specificare i parametri WIDTH e HEIGHT per ogni immagine inline.
Innanzitutto dipende da che sistema. JS non lascia molto spazio alla CPU, specialmente in quelle routine dove si innescano dei loop a tempo in attesa di un evento. Un tipico esempio è il test necessario per verificare se una nuova pagina è stata caricata. Si innesca un loop a tempo che ogni tot centesimi di secondo va a verificare l'esistenza di una certa variabile nella nuova pagina.
È possibile far 'parlare' tra loro due applet Javascript su due frame o finestre diverse?
Si per i frame. Per le finestre anche, a patto che una abbia generato l'altra, o che ambedue siano state generate da una terza, e ch equindi si conoscano 'per nome'. Deve esistere cioè un 'passaggio' di puntamenti alle funzioni negli script. In teoria sono possibili meccanismi di passaggio di variabili 'globali' tra una finestra e l'altra ecc. Si tratta pero' di applicazioni fragili, perche' bisogna prevedere ad esempio che l'utente chiuda una finestra per sbaglio, o la ricarichi o, semplicemente, la ridimensioni (cosa che in Netscape provoca il ricaricamento della finestra, con conseguente reinizializzazione delle variabili). A questo scopo può essere utilizzato per salvarsi le variabili importanti uno speciale file di Netscape, che risiede sulla macchina client, i Cookies (biscottini), l'unico file che Javascript può andare a scrivere. I Cookies possono inoltre essere utilizzati per salvare, ad esempio, dati immessi tramite un form dall'utente o altro. Un applet Javascript può testare il contenuto del file cookie dell'utente e ritrovare in questo le informazioni che l'utente vi aveva memorizzato nell'ultima visita, esempio nome, preferenze, accquisti online già effettuati ecc.