La ricerca di una parola o frase in un documento si effettua con due diversi metodi a seconda che l'utente usi MSIE oppure Netscape, Mozilla o Firefox. Nel secondo caso basta una sola riga di codice per avviare la ricerca: self.find(). Tale codice apre la finestra di dialogo propria del browser - a destra nella pagina si può vedere quella di Mozilla - con tutte le opzioni. In effetti però con Firefox, pur aprendosi regolarmente, la finestra di dialogo non funziona.
Anche con MSIE conviene far aprire una finestra pop up di ricerca che resti sempre in primo piano e che permetta la visualizzazione del testo cercato anche attraverso lo scorrimento della pagina. Il codice che abbiamo preparato apre una finestra di dialogo in cui è possibile immettere il testo da cercare: se questo viene trovato appare selezionato, altrimenti si riceve un opportuno avviso. La ricerca può essere ripetuta più volte; al termine compare un messaggio con il numero di occorrenze del testo cercato.
Il risultato dello script può essere provato cliccando sul bottone
<script language=javascript>
Si introduce codice javascript function cerca () {
| Dichiarazione della funzione di nome cerca() if (document.all) {
| Se il browser è Internet Explorer finestra= window.open('ricerca.htm','nome','width=400,height=200')
| Viene aperto in una finestra pop up di dimensioni 400 × 200 il file di nome "ricerca.htm" finestra= window.focus
| La finestra viene aperta in primo piano: se ci sono altre finestre questa viene aperta sopra le altre. finestra.document.close()
| Si comunica al browser che le istruzioni relative all'apertura della finestra sono terminate }
| Parentesi di chiusura della selezione binaria (if) else if(document.getElementById) {
| Altrimenti se il browser è Netscape, Mozilla o FireFox self.find()
| Viene attivato il metodo che apre la finestra di ricerca propria di questi browsers }
| Parentesi di chiusura di else if else window.alert('Il tuo browser non supporta questo metodo')
| Qualora il browser dell'utente non riconosca nessuno dei casi previsti, si riceve il messaggio: "Il tuo browser non supporta questo metodo" }
| Parentesi di chiusura della funzione cerca() </script>
| Fine script |
Inserire il seguente codice per il bottone , fra i tags <BODY> e </BODY> :
<input type=button name=bo value="Cerca in questa pagina" OnClick="javascript:cerca()">
<script language=javascript>
Si introduce codice javascript var volte = 0;
| Si inizializza la variabile di nome volte che serve per memorizzare il numero di occorrenze della parola cercata nel documento. var trovato = false;
| Si inizializza la variabile booleana di nome trovato che diventerà vera qualora la parola cercata si trovi nel documento. var base='';
| Si inizializza la variabile di nome base che serve per memorizzare l'intervallo di testo per la ricerca. function inizia() { | base = opener.document.body.createTextRange(); } Si dichiara la funzione inizia() che crea un intervallo di testo (TextRange) coincidente con tutto il contenuto testuale del corpo del documento dal quale proveniamo (opener) e lo memorizza nella variabile base. function trova() {
| Si introduce la funzione trova if (document.MioForm.testo.value == '') { | alert('Nulla da cercare!'); return; } Se non è stata inserita alcuna stringa della casella di testo del form viene generato il messaggio: "Nulla da cercare!" if (volte==0) { | inizia() } Se volte=0, cioè se la funzione trova è stata attivata per la prima volta, si chiama la funzione inizia trovato=base.findText(document.MioForm.testo.value)
| Il metodo find.Text permette di ricercare la stringa chiusa in parentesi. Se questa stringa viene trovata la variabile trovato diventa vera, altrimenti resta falsa come la avevamo posta prima. if (trovato) {
| Se la variabile trovato è vera base.findText(document.MioForm.testo.value);
| Come spiegato prima, l'intervallo di testo viene ora ristretto alla stringa cercata. base.select();
| La stringa appare selezionata base.scrollIntoView();
| La stringa trovata viene visualizzata all'inizio o alla base della pagina, e quindi il testo viene fatto scorrere. In parentesi può essere aggiunta una variabile booleana che se vera, visualizza la parola all'inizio della pagina, se falsa, alla base. Di default la parola viene visualizzata nella parte alta della pagina. volte++;
| la variabile volte viene incrementata di 1 base.moveStart("character", 1); | base.moveEnd("textedit"); L'inizio dell'intervallo di testo viene spostato avanti di un carattere, mentre il termine coincide con il termine dell'intervallo precedente. In questo modo il nuovo intervallo di ricerca varierà fra il carattere subito dopo la stringa trovata e la fine del documento. }
| Parentesi di chiusura della selezione binaria else {
| altrimenti (la variabile trovato è falsa) if (volte == '0')
alert('"' + document.MioForm.testo.value +'" non è stato trovato in questa pagina.');
| Se volte è ancora uguale a zero, si riceve l'avviso che la parola cercata non è stata trovata else | alert('"' + document.MioForm.testo.value+'" è stato trovato '+ volte+' volte in questa pagina.'); Questo else riguarda l'evento: "volte non è zero e trovato è falso". In questo caso viene visualizzato il messaggio che contiene il numero di volte in cui la stringa è stata trovata. volte=0;
| Si pone nuovamente volte uguale a zero per una nuova ricerca } | } Chiusura function </script>
| Fine script. |
©2005 www.webfract.it