Autore Topic: HELP ---- NAVIGAZIONE DOM --- ERRORI NEL CODICE??? ---  (Letto 973 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline geggio447

  • Post: 10
HELP ---- NAVIGAZIONE DOM --- ERRORI NEL CODICE??? ---
« il: 17 Febbraio 2009 10:00:56 »
Salve a tutti ho problemi con la navigazione dom in questa funzione JS.
In pratica devo eseguire una ricerca con google...e prenderne i link risultanti......
ora....questo codice mi scoppia nel momento in cui comincio a navigare il Body dell'html.....
ho visto le api per la sintassi ma non riesco a trovare frandi errori....mi potreste aiutare a risolvere questo problema??? ho provato prima usando in maniera rude i ChildNodes.... poi con i get element.....fino ad un certo punto perche poi ho comunque verificato che scoppia sempre allo stesso punto...verifica fatta tramite l'inserimento di Alert.......

di seguito i codici...se avete qualche altra idea....i link devono essere inseriti tutti in una lista di Array...


QUESTA è stata la seconda prova....

Codice: [Seleziona]
function websearchGoogle() {
   var fgtext = document.getElementById("searchtext").value;
   var itasearch;
   document.getElementById("italiano").selected ? itasearch="lr%3Dlang_it" : itasearch="";
   var strsearch = "http://www.google.it/search?num=100&hl=it&as_qdr=all&q="+fgtext+"&btnG=Cerca&meta="+itasearch;
   window.content.document.location.href = strsearch;
    msgWindow=window.open(strsearch,"location=yes, toolbar=yes, directories=yes, status=yes, menubar=yes, scrollbars=yes, resizable=yes, width=10, height=10");
    msgWindow.focus();
    var body=msgWindow.document.getElementsByTagName("body");
    var listLink=new Array();
    var count=0;
    var lisa=body.getElementsByClassName("med");//<<<<<<<<<<<<<<<<<<<<<-------SCOPPIA QUI
    //var lisa=body.getElementsById("res"); ho provato anche con l'Id ma non va...
    var lis=lisa.getElementsByClassName("");
    lisa=lis.getElementsByClassName("");
    for(i=0;i<lisa.lenght-1;i++) {
      if (lis[i].className == ("g")){  
      listLink[count]=lis[i].childNodes[0].childNodes[0].href;
      }else{
if(lis[i].className=="g s"){
  listLink[count]=lis.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.getAttribute("href");
      }else{
if(lis[i].className==""){
  listLink[count]=lis[i].href;
      } }}
      count++;
      document.write(listLink[i] + "<br>");

      }


Questa era la prima prova....


function websearchGoogle() {
   var fgtext = document.getElementById("searchtext").value;
   var itasearch;
   document.getElementById("italiano").selected ? itasearch="lr%3Dlang_it" : itasearch="";
   var strsearch = "http://www.google.it/search?num=100&hl=it&as_qdr=all&q="+fgtext+"&btnG=Cerca&meta="+itasearch;
   window.content.document.location.href = strsearch;
    msgWindow=window.open(strsearch,"location=yes, toolbar=yes, directories=yes, status=yes, menubar=yes, scrollbars=yes, resizable=yes, width=10, height=10");
    msgWindow.focus();
    var body=msgWindow.document.getElementsByTagName("body");
     alert ("sono qui assegnazione del body.......");
    var listLink=new Array();
     alert ("creazione array");
    var count=0;
    alert ("count");
   var lis=root.childNodes[5].childNodes[2].childNodes[0];  // <<<<<-------scoppia qui
    for(i=0;i<lis.lenght-1;i++) {
      alert ("sono qui1");
      if (lis[i].className == ("g")){  
      listLink[count]=lis[i].childNodes[0].childNodes[0].href;
      }else{
if(lis[i].className=="g s"){
  listLink[count]=lis.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.getAttribute("href");
      }else{
if(lis[i].className==""){
  listLink[count]=lis[i].href;
      } }}
      count++;
      alert ("sono qui2");
      document.write(listLink[i] + "<br>");

      }


in piu un ultima domanda.....per prelevare il link....

va bene questa sintassi... childNodes[0].href;
o questa... .firstChild.getAttribute("href");

ringrazio in anticipo per l'aiuto  :D
« Ultima modifica: 19 Febbraio 2009 11:21:34 da klades »

Offline Godai71

  • Moderatore
  • Post: 4153
    • The Walking Shadow
Re: HELP ---- NAVIGAZIONE DOM --- ERRORI NEL CODICE??? ---
« Risposta #1 il: 17 Febbraio 2009 10:13:19 »
Mi è parso di capire che vuoi esplorare la pagina dei risultati di Google e trovare gli indirizzi dei siti presenti nella pagina.

Puoi provare a vedere come li recupera GooglePreview

Mi dispiace non poter dare un aiuto maggiore.

Offline geggio447

  • Post: 10
Re: HELP ---- NAVIGAZIONE DOM --- ERRORI NEL CODICE??? ---
« Risposta #2 il: 17 Febbraio 2009 11:22:36 »
Grazie per la risposta, ho dato un occhiata al codice ma è troppo complessa la plugin per per trovar e capire il codice...vista la mia poca esperienza nel campo.....

ho comunque fatto un passo avanti......

Codice: [Seleziona]
function websearchGoogle() {
   var fgtext = document.getElementById("searchtext").value;
   var itasearch;
   document.getElementById("italiano").selected ? itasearch="lr%3Dlang_it" : itasearch="";
   var strsearch = "http://www.google.it/search?num=100&hl=it&as_qdr=all&q="+fgtext+"&btnG=Cerca&meta="+itasearch;
   window.content.document.location.href = strsearch;
    msgWindow=window.open(strsearch,"location=yes, toolbar=yes, directories=yes, status=yes, menubar=yes, scrollbars=yes, resizable=yes, width=10, height=10");
    msgWindow.focus();
    var body=msgWindow.document.getElementsByTagName("body")[0]; <- ho messo il [0] e son andato avanti
    var listLink=new Array();
    var count=0;
    var lisa=body.getElementsByClassName("med");
    var lis=lisa.getElementsByClassName("");//<<<<<<<<<<<<<<<<<<<<<-------ORA SCOPPIA QUI
   // var lis=lisa.getElementsByTagName("DIV"); ho provato anche questa ma niente....
    lisa=lis.getElementsByClassName("");
    for(i=0;i<lisa.lenght-1;i++) {
      if (lis.className == ("g")){   
      listLink[count]=lis.childNodes[0].childNodes[0].href;
      }else{
   if(lis.className=="g s"){
     listLink[count]=lis.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.getAttribute("href");
      }else{
    if(lis.className==""){
     listLink[count]=lis.href;
      } }}
      count++;
      document.write(listLink + "
");

      }
« Ultima modifica: 19 Febbraio 2009 11:22:04 da klades »

Offline klades

  • Moderatore
  • Post: 5788
    • http://www.nic-nac-project.org/~kaosmos
Re: HELP ---- NAVIGAZIONE DOM --- ERRORI NEL CODICE??? ---
« Risposta #3 il: 17 Febbraio 2009 16:41:38 »
Controlla che errore ti dà in Strumenti --> Console degli errori.
Metti qualche alert all'interno, per essere sicuro che gli oggetti corrispondono a quello che vuoi tu.

Offline geggio447

  • Post: 10
Re: HELP ---- NAVIGAZIONE DOM --- ERRORI NEL CODICE??? ---
« Risposta #4 il: 18 Febbraio 2009 12:19:20 »
la consolle degli errori riporta solo errori di google....

di alert ne ho inseriti molti.....dopo la stringa di codice:

var body=msgWindow.document.getElementsByTagName("body")[0];
con un alert del tipo: alert(body);

mi ritorna: [object XPCNativeWrapper [object HTMLBodyElement]]

ma è in realtà il body della pagina??? perche poi mi sembra essere vuoto.... se poi faccio in getByTagName("tag")....o getById...... mi ritorna null.....

Offline geggio447

  • Post: 10
Re: HELP ---- NAVIGAZIONE DOM --- ERRORI NEL CODICE??? ---
« Risposta #5 il: 18 Febbraio 2009 15:44:07 »
è possibile che il body sia ancora vuoto (ho verificato e risulta senza figli.....) perche all'esecuzione della riga js (sequenziale a quella di apertura della pagina..) lo script comincia a lavorare sul body e la pagina non è ancora carica...è possibile che me lo dia vuoto???

per poter evitare questo possibile problema potete suggerirmi qualche soluzione?

Offline klades

  • Moderatore
  • Post: 5788
    • http://www.nic-nac-project.org/~kaosmos
Re: HELP ---- NAVIGAZIONE DOM --- ERRORI NEL CODICE??? ---
« Risposta #6 il: 19 Febbraio 2009 11:27:45 »
è possibile che il body sia ancora vuoto (ho verificato e risulta senza figli.....) perche all'esecuzione della riga js (sequenziale a quella di apertura della pagina..) lo script comincia a lavorare sul body e la pagina non è ancora carica...è possibile che me lo dia vuoto???

Secondo me è indubbiamente questo il motivo.

per poter evitare questo possibile problema potete suggerirmi qualche soluzione?

Prova questo, non l'ho testato ed è sicuramente perfettibile.

Codice: [Seleziona]
var msgWindow=window.open(strsearch,"location=yes, toolbar=yes, directories=yes, status=yes, menubar=yes, scrollbars=yes, resizable=yes, width=10, height=10");
msgWindow.addEventListener("load", function1, false);

function function1() {
     window.content.addEventListener("load", function2, true);
}

function function2() {
// window.document.body ora dovrebbe darti il codice HTML della pagina
}

P.S. : per cortesia usa il tag code per inserire i pezzi di codice, grazie


0 Utenti e 1 Visitatore stanno visualizzando questo topic.