Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Ricerca su un sito 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:

    codice:
    <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[c]=new Array("index.html","","Web-Link","index,main,start,home","Dimostrazione motore di ricerca interno al tuo sito.");
    
    c++; item[c]=new Array("index.html","","primi passi","iniziare,principianti,come,fare","Corso html per principianti.");
    
    c++; item[c]=new Array("index.html","","Guida html","html,links,pagina,web","Guida html.");
    
    c++; item[c]=new Array("scripting.htm","main/","Scripting","script,scripting,javascript,dhtml","Scripting per tutti.");
    
    c++; item[c]=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[i] = 0; order = new Array(0, 4, 2, 3);
    for (j = 0; j < order.length; j++)
    for (k = 0; k < txt.length; k++)
    if (item[i][order[j]].toLowerCase().indexOf(txt[k]) > -1 && txt[k] != "")
    fnd[i] += (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>
    Parole trovate: "+total+"
    <\/center><\/body><\/html>");
    win.document.close();
    }
    function show(which,wind,num) {
    link = item[which][1] + item[which][0]; 
    line = "<tr><td>"+item[which][2]+" Punti: "+num+"
    ";
    line += item[which][4] + "
    "+link+"<\/td><\/tr>";
    wind.document.write(line);
    return 1;
    }
    
    </script>
    nella pagina/e da cui si deve eseguire la ricerca invece

    va il form:

    codice:
    <form method=get action="javascript: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?! )

    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
    E' arrabbiato con il mondo, con la propria famiglia e con se stesso. Più che altro è arrabbiato e basta. (Goblin furioso)

    Scaglia abbastanza goblin su un qualsiasi problema e dovresti risolverlo. E in ogni caso ti ritroverai meno goblin trai i piedi. (Scagliaorda goblin)

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    il document.write è inutile, creati la tua bella paginetta già formattata come piace a te e inserisci i risultati dentro un contenitore con i metodi del DOM o con innerHTML

  3. #3
    Ciao Vindav,
    Hai per caso un esempio di come fare?
    Non ho praticamente esperienza con il DOM
    E' arrabbiato con il mondo, con la propria famiglia e con se stesso. Più che altro è arrabbiato e basta. (Goblin furioso)

    Scaglia abbastanza goblin su un qualsiasi problema e dovresti risolverlo. E in ogni caso ti ritroverai meno goblin trai i piedi. (Scagliaorda goblin)

  4. #4
    Sto cercando online per imparare a sfruttare il DOM, ma mi piacerebbe trovare qualcosa che possa permettermi di lasciare intatto l'array senza doverlo riscrivere.....
    Il sito non è grandissimo ma i contenuti da inserire nell'array nn sono pochi e il lavoro pessimo di copia e incolla è stato gia fatto....

    E' possibile manipolare questo anzi di rifarne uno da ero?
    XD
    E' arrabbiato con il mondo, con la propria famiglia e con se stesso. Più che altro è arrabbiato e basta. (Goblin furioso)

    Scaglia abbastanza goblin su un qualsiasi problema e dovresti risolverlo. E in ogni caso ti ritroverai meno goblin trai i piedi. (Scagliaorda goblin)

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    mettiamo che il codice della tua popup sia questo:

    codice:
    <html>
    <head>
    <title>Script su scripting di WebLinkSearch Results</title>
    <\/head>
    <body bgcolor='white'>
    <center>
    <table id='mytable' border=0 cellspacing=10 width=80%>
    </table>
    </body>
    </html>
    puoi inserire i risultati nella tabella cosi:

    codice:
    win = window.open("","","scrollbars");
    mytable = win.document.getElementById("mytable");
    mytable.innerHTML = "<tr><td>ciao</td></tr>";
    oppure:

    codice:
    win = window.open("","","scrollbars");
    trTag = document.createElement("tr");
    tdTag = document.createElement("td");
    txtTag = document.createTextNode("ciao");
    mytable = win.document.getElementById("mytable");
    
    mytable.appendChild(trTag);
    trTag.appendChild(tdTag);
    tdTag.appendChild(txtTag);

  6. #6
    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
    E' arrabbiato con il mondo, con la propria famiglia e con se stesso. Più che altro è arrabbiato e basta. (Goblin furioso)

    Scaglia abbastanza goblin su un qualsiasi problema e dovresti risolverlo. E in ogni caso ti ritroverai meno goblin trai i piedi. (Scagliaorda goblin)

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    ti devi creare la tua paginetta di popup...

    win = window.open(URLTUAPAGINA,"","scrollbars");
    mytable = win.document.getElementById("mytable");
    mytable.innerHTML = "<tr><td>ciao</td></tr>";

    la tua pagina avra gia impostato i css, detto questo la variabile page non serve piu a nulla!
    Inoltre il codice che hai postato mi sebre proprio obsoleto, andrebbe riscritto da zero, non credo proprio che per mostrare dei risultati servano nmila cicli for.

  8. #8
    Ciao!
    ho creato la pagina results...

    codice:
    <html> <head> <title>Script su scripting di WebLinkSearch Results</title> </head> <body bgcolor='white'> <table id="mytable" cellspacing="10" width="80%"> </table> </body> </html>
    Poi la pagina home con dentro la funzione della ricerca

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <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[c]=new Array("index.html","","Web-Link","index,main,start,home","Dimostrazione motore di ricerca interno al tuo sito.");  c++; item[c]=new Array("index.html","","primi passi","iniziare,principianti,come,fare","Corso html per principianti.");  c++; item[c]=new Array("index.html","","Guida html","html,links,pagina,web","Guida html.");  c++; item[c]=new Array("scripting.htm","main/","Scripting","script,scripting,javascript,dhtml","Scripting per tutti.");  c++; item[c]=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.");    function search(frm) { win = window.open("results.html","","scrollbars"); mytable = win.document.getElementById("mytable"); mytable.innerHTML = "<tr><td>ciao</td></tr>"; txt = frm.srchval.value.split(" "); fnd = new Array(); total=0; for (i = 0; i < item.length; i++) { fnd[i] = 0; order = new Array(0, 4, 2, 3); for (j = 0; j < order.length; j++) for (k = 0; k < txt.length; k++) if (item[i][order[j]].toLowerCase().indexOf(txt[k]) > -1 && txt[k] != "") fnd[i] += (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; }  } function show(which,wind,num) { link = item[which][1] + item[which][0];  line = "<tr><td>"+item[which][2]+" Punti: "+num+"
    "; line += item[which][4] + "
    "+link+"<\/td><\/tr>"; wind.document.write(line); return 1; }  </script> </head>  <body> <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> </body> </html>
    nella funzione ho sostituito il window.open e il document write con

    win = window.open("results.html","","scrollbars");
    mytable = win.document.getElementById("mytable");
    mytable.innerHTML = "<tr><td>ciao</td></tr>";

    ho tolto la variabile page che non uso piu e anche il document.write relativo alla scrittura della chiususa dei tag, essendo tutto nella pagina results.

    se provo a fare una ricerca, si apre la pagina ma senza darmi i risultati...semplicemente bianca.

    se provo come in precedenza a togliere brutalmente le righe relative alla scrittura, visualizzo i risultati, ma nella pagina home di partenza e non in quella results...

    lo so che sono duro eh.....ma dove sbaglio?
    E' arrabbiato con il mondo, con la propria famiglia e con se stesso. Più che altro è arrabbiato e basta. (Goblin furioso)

    Scaglia abbastanza goblin su un qualsiasi problema e dovresti risolverlo. E in ogni caso ti ritroverai meno goblin trai i piedi. (Scagliaorda goblin)

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    il codice scrivilo su piu righe e ben formattato altrimenti è illeggibile, inoltre usa la console del browser per verificare se ci sono errori nel codice js.

  10. #10
    Ciao!
    Eccolo qui
    Stavo appunto cercando si sistemarlo XD

    Se lo provo mi da un errore con impossibile visualizzare la pagina web, e nella barra dell'url java-script:void(0)?srchval=html

    dove html era una cosa a caso che ho provato a cercare


    PAGINA RESULTS:

    codice:
    <html> 
      <head> 
         <title>Script su scripting di WebLinkSearch Results</title>
      </head>
    
      <body bgcolor='white'> 
         <table id="mytable" cellspacing="10" width="80%"> </table> 
      </body> 
    </html>

    PAGINA HOME:

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    <script language="JavaScript" type="text/javascript">
    
    var item = new Array();
    
    c=0; item[c]=new Array("index.html","","Web-Link","index,main,start,home",
    "Dimostrazione motore di ricerca interno al tuo sito.");
    
    c++; item[c]=new Array("1.html","","primi passi","","Corso html ");
    c++; item[c]=new Array("2.html","","primi passi","","Corso2 html ");
    c++; item[c]=new Array("3.html","","primi passi","","Corso3 html ");
    c++; item[c]=new Array("4.html","","primi passi","","Corso4 html ");
    
    function search(frm) {
    
    
    win = window.open("results.html","","scrollbars");
    mytable = win.document.getElementById("mytable"); 
    mytable.innerHTML = "<tr><td>ciao</td></tr>";
    
    
    
    txt = frm.srchval.value.split(" ");
    fnd = new Array(); total=0;
    
    for (i = 0; i < item.length; i++) {
    fnd[i] = 0; order = new Array(0, 4, 2, 3);
    for (j = 0; j < order.length; j++)
    for (k = 0; k < txt.length; k++)
    if (item[i][order[j]].toLowerCase().indexOf(txt[k]) > -1 && txt[k] != "")
    fnd[i] += (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;
    }
    
    }
    function show(which,wind,num) {
    link = item[which][1] + item[which][0]; 
    line = "<tr><td>"+item[which][2]+" Punti: "+num+"
    ";
    line += item[which][4] + "
    "+link+"<\/td><\/tr>";
    wind.document.write(line);
    return 1;
    }
    
    </script>
    </head>
    
    <body>
    <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>
    </body>
    </html>
    E' arrabbiato con il mondo, con la propria famiglia e con se stesso. Più che altro è arrabbiato e basta. (Goblin furioso)

    Scaglia abbastanza goblin su un qualsiasi problema e dovresti risolverlo. E in ogni caso ti ritroverai meno goblin trai i piedi. (Scagliaorda goblin)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.