Tra gli elementi più importanti di un sito Web, la ricerca interna ricopre certamente un ruolo determinante. La presenza di un search engine interno è una consuetudine che trae origine dall'enorme utilità della ricerca per parola chiave, senza la quale c'è il concreto rischio di perdersi tra centinaia di documenti.
È possibile creare un motore di ricerca interno attraverso dei semplici script CGI, ovvero grazie ad alcune utility dei webserver più diffusi (Index Server di IIS, per esempio).
Il limite maggiore degli script CGI è la necessità di avere accesso alla directory CGI del proprio server. Anche se molti fornitori di hosting danno questa possibilità, si possono comunque incontrare problemi di installazione, soprattutto per chi non ha esperienze precedenti.
Anche se le prestazioni non sono assolutamente comparabili, Javascript permette di creare un rudimentale motore di ricerca interno. Lo script che presentiamo, infatti, consente di cercare termini all'interno di una singola pagine Web, in base a parole chiave impostate in precedenza.
In altri termini, le parole chiave devono essere inserite all'atto della configurazione, perchè lo script non legge il contenuto della pagina, ma le keyword inserite manualmente. La risposta viene visualizzata all'interno di una finestra indipendente, che a sua volta carica i risultati nella finestra principale.
L'esempio si compone di 1 file:
- esempio.htm
Per una più semplice comprensione del presente script fai continuamente riferimento ai file sopracitati, verificando le procedure e i dati espressi. Solo in questo modo, con un continuo confronto, comprenderai le peculiarità di questo Javascript.
La sintassi di questo script va inserita all'interno del documento, dunque tra i tag <body></body>. La prima parte di codice configura lo script, mentre la seconda inserisce il box di ricerca. Vediamo come si imposta lo script:
<script
language="javascript">
<!-- Hide Script from Old Browsers
Keyword = new Object();
Descrip = new Object();
Address = new Object();
Keyword[0] = 6
Keyword[1] = "javascript"
Descrip[1] = "350 esempi javascript gratuiti"
Address[1] = "https://www.html.it/jscript"
Keyword[2] = "html"
Descrip[2] = "La guida in italiano all'HTML"
Address[2] = "https://www.html.it/guida"
Keyword[3] = "applet"
Descrip[3] = "Oltre 300 applet Java da scaricare"
Address[3] = "https://www.html.it/java"
Keyword[4] = "cgi"
Descrip[4] = "Il punto di riferimento italiano sui CGI"
Address[4] = "https://www.html.it/cgi"
function checkDatabase() {
var Found = false
var Item = document.forms[0].searchfor.value.toLowerCase();
stats='toolbar=no,location=no,directories=no,status=no,menubar=no,height=300,wid
th=300,'
stats += 'scrollbars=yes,resizable=yes'
MsgBox = window.open ("","msgWindow",stats)
MsgBox.opener = window;
MsgBox.opener.name = "opener";
MsgBox.document.write("<head><title>Risultati della ricerca | Un
JavaScript a settimana | HTML.it</title></head>
<body>");
MsgBox.document.write ("<body bgcolor=white text=black link=blue
vlink=darkblue alink=blue><H2><div align="center"><font face=arial>Risultati della ricerca</CENTER></H2>")
MsgBox.document.write ("<font size=3><strong><div
align="center">Per il termine: "+Item+"</center><hr width=50%></strong></font>");
for (var i=1; i <= Keyword[0]; i++) {
if(Item == Keyword[i]) {
Found = true;
MsgBox.document.write ("<li><font face=arial><font
size=2><strong>"+Descrip[i]+"<br /><a href="+Address[i]+" target='opener'>Clicca qui</a></font></font>")
}
}
if(!Found)
MsgBox.document.write ("<H4>Nessun risultato</H4>")
MsgBox.document.write ("<FORM><div align="center">")
MsgBox.document.write ("<font size=2><font color=arial><INPUT
type='button' value='chiudi' onClick = 'self.close()'></font></font>")
MsgBox.document.write ("</CENTER></FORM>")
MsgBox.document.write
("<H6><small><small><small><strong></strong><font color=white><font face=arial><font size=1><font
color=black>Originally created by Adam Allen <br />© 1997 All Rights Reserved</font></font></small></small></small>")
}
// -->
</script>
Keyword[0] = 6
è numero di parole chiave che lo script cerca alla pressione del tasto di submit.
Successivamente vengono impostate le singole parole chiave (keyword), la descrizione (Descrip) e l'URL al quale associare il tutto (Address):
Keyword[1] = "javascript"
Descrip[1] = "350 esempi javascript gratuiti"
Address[1] = "https://www.html.it/jscript"
Keyword[2] = "html"
Descrip[2] = "La guida in italiano all'HTML"
Address[2] = "https://www.html.it/guida"
Keyword[3] = "applet"
Descrip[3] = "Oltre 300 applet Java da scaricare"
Address[3] = "https://www.html.it/java"
Keyword[4] = "cgi"
Descrip[4] = "Il punto di riferimento italiano sui CGI"
Address[4] = "https://www.html.it/cgi"
In questo caso abbiamo inserito 4 parole chiave:
javascript, html, applet e cgi
Ad ognuna di esse abbiamo assegnato un numero progressivo (compreso tra le parantesi quadre):
Keyword[1] = "javascript"
È la parola chiave che abbiamo inserito e che viene individuata dallo script durante la ricerca.
Descrip[1] = "350 esempi javascript gratuiti"
È la descrizione che lo script associa alla parola chiave trovata
Address[1] = "https://www.html.it/jscript"
È il link che lo script assegna alla parola chiave trovata.
Successivamente impostiamo la dimensione e le caratteristiche della finestra indipendente che si apre per contenere i risultati della ricerca:
stats='toolbar=no,location=no,directories=no,status=no,menubar=no,height=300,width=300,'
stats += 'scrollbars=yes,resizable=yes'
Le dimensioni della finestra sono pari a 300x300 pixel, con la presenza dello scroller laterale ridimensionabile, senza status bar nè collegamenti.
Il codice successivo si riferisce ai messaggi testuali da inserire nella pagina di risposta oltre ad alcune note sul copyright.
Impostato lo script, è necessario inserire il box di ricerca all'interno della pagina:
<form name="form1">
cerca un termine<br /></strong>
<input type="text" name="searchfor" value="javascript" size="20">
<input type="button" value="cerca" onclick="checkdatabase()">
</form>
Il gestore di eventi onClick richiama la funzione checkDatabase() alla pressione del tasto di submit.
Le parole chiave che possiamo trovare in questo documento sono: javascript, html, cgi e applet, inserendo termini diversi otteniamo una pagina che ci avverte dell'assenza di termini.
I link presenti nella finestra indipendente vengono caricati in quella principale, ed un bottone premette di chiudere facilmente la finestra di ricerca.