- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- Motore di Ricerca interno - Problemi con document.write
-
Motore di Ricerca interno - Problemi con document.write
Ciao!
vorrei realizzare una piccola ricerca in JS su un sito di poche pagine, realizzato tutto in HTML ed ho trovato online un javasript abbastanza facile da configurare.lo posto qui:```
<script language="JavaScript" type="text/javascript"> var item = new Array(); // "Nome pagina","percorso","Titolo pagina","parole,chiave,Key,Words","Descrizione e Commenti" c=0; item=new Array("index.html","","Web-Link","index,main,start,home","Dimostrazione motore di ricerca interno al tuo sito."); c++; item=new Array("index.html","","primi passi","iniziare,principianti,come,fare","Corso html per principianti."); c++; item=new Array("index.html","","Guida html","html,links,pagina,web","Guida html."); c++; item=new Array("scripting.htm","main/","Scripting","script,scripting,javascript,dhtml","Scripting per tutti."); c++; item=new Array("lewebcen.gif","main/images/","Link Logo","link,image,logo,graphic,immagine","Il logo del mio sito in formato gif. Potete fare un link adoperando questo."); page="<html><head><title>Script su scripting di WebLinkSearch Results</title></head><body bgcolor='white'><center><table border=0 cellspacing=10 width=80%>"; function search(frm) { win = window.open("","","scrollbars"); win.document.write(page); txt = frm.srchval.value.split(" "); fnd = new Array(); total=0; for (i = 0; i < item.length; i++) { fnd* = 0; order = new Array(0, 4, 2, 3); for (j = 0; j < order.length; j++) for (k = 0; k < txt.length; k++) if (item*[order[j]].toLowerCase().indexOf(txt[k]) > -1 && txt[k] != "") fnd* += (j+1); } for (i = 0; i < fnd.length; i++) { n = 0; w = -1; for (j = 0;j < fnd.length; j++) if (fnd[j] > n) { n = fnd[j]; w = j; }; if (w > -1) total += show(w, win, n); fnd[w] = 0; } win.document.write("</table><br>Parole trovate: "+total+"<br></center></body></html>"); win.document.close(); } function show(which,wind,num) { link = item[which][1] + item[which][0]; line = "<tr><td><a href='"+link+"'>"+item[which][2]+"</a> Punti: "+num+"<br>"; line += item[which][4] + "<br>"+link+"</td></tr>"; wind.document.write(line); return 1; } </script>
nella pagina/e da cui si deve eseguire la ricerca invece va il form:
<form method=get action="java-script:void(0)" onsubmit="search(this); return false;"> <input type=text name=srchval value=""><input type=submit value="Cerca"> </form>
Tutto sommato è facile da sistemare anche per me che ci capisco ben poco, e devo dire che funziona pure abbastanza bene....tranne che su IE. (ovvio no?! :p) Cercando online ho trovato parecchie problematiche relative al **document.write**, che sembrerebbe essere la causa di tutto, perchè genera un errore di **autorizzazione negata** solo con il beneamato browser di casa MS, bloccando ovviamente tutta la pagina e impedendo la visualizzazione dei risultati. Se omettiamo con un commento la riga **win.document.write(page);** allora tutto va apposto e i risultati vengono mostrati, ma purtroppo poi non è piu possibile formattare la pagina dandole un aspetto decoroso, perche nella variabile "page" in realtà si va a mettere tutto l'html che andrà a impaginare le cose nel modo giusto, (praticamente come le altre pagine del sito), in modo da non far notare la differenza agli utenti e laciando cmq i menu, e tutto il resto. Chiedo a voi allora, se è possibile da questo script fare in modo che il document.write lavori anche con IE, oppure se esiste un modo alternativo per "scrivere" la pagina dei risultati.! PS: non ho preso in considerazione linguaggi lato server perche sono a secco di nozioni XD Thx in advance :D
-
Allora, cercando sempre online, forse posso usare l'innerHTML che sembra essere accettato da explorer, ma sono davvero alle prime armi!
Nel frattempo che mi ci metto, qualcuno saprebbe darmi una mano?thx!
-
Ciao! tra una guida e l'altra sto andando per tentativi...
ho provato a sostituire nella funzione search
win.document.write(page); con document.getElementsByTagName("html").innerHTML= page;
Effettivamente ora non si impalla piu, e i risultati vengono mostrati, ma non vede cmq la formattazione con i css con nessuno dei browser (Firefox Chrome Opera etc..) che invece prima la mostravano (tranne ie).
Qualcuno sarebbe così paziente da provare a darmi una mano?
Grazie