TROVARE UNA STRINGA IN UN DOCUMENTO

 

Ricerca con NetscapeLa 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

COME OTTENERE IL RISULTATO

PASSO UNO

Preparare il seguente codice javascript, a inserire fra i tags <HEAD> ed </HEAD> :

<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

PASSO DUE

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()">

PASSO TRE

Preparare il file per trovare le parole e salvarlo con il nome ricerca.htm.
Fra i tags <HEAD> ed </HEAD> di questo file inserire il seguente codice:

<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.
Nel momento in cui si usa il metodo find.Text, l'intervallo di testo, che inizialmente avevamo esteso a tutto il documento, automaticamente si restringe alla sola stringa cercata.

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.

PASSO QUATTRO

Sempre nel file ricerca.htm inserire il seguente codice, fra i tags <BODY> e </BODY> :

<form name="MioForm">
<input type="text" name="testo">
<input type="button" value="TROVA" onClick="trova()">
</form>

Tale codice visualizza nel corpo del documento il form con la casella di testo per inserire la stringa da cercare ed il bottone per avviare la ricerca stessa.


INDICEINDIETRO

©2005 www.webfract.it