Autore Topic: [Developer] Leggere HTML & eseguire codice al caricamento di una pagina  (Letto 1448 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline gettysburg1863

  • Post: 5
salve a tutti. avrei una domanda molto semplice forse per gli esperti ma non per me... ho un'estensione, che per adesso si limita a leggere il titolo della pagina visualizzata con l'istruzione javascript all'interno del file xul:

alert(content.document.title);

il prossimo passo sarebbe quello di cercare una certa parola all'interno dell'intera pagina html e, se presente, fare qualcosa (è una prova, per futuri utilizzi). come potrei fare? grazie a tutti!!!
« Ultima modifica: 20 Luglio 2009 14:02:08 da gettysburg1863 »

Offline klades

  • Moderatore
  • Post: 5788
    • http://www.nic-nac-project.org/~kaosmos
Re: [Developer] Leggere HTML
« Risposta #1 il: 16 Luglio 2009 12:11:42 »
Ci sono diversi modi in cui potresti procedere, a secondo del risultato che vuoi ottenere.
Poniamo che per esempio vuoi sosituire la parola "Mozilla" con "Bozilla" in tutte le pagine web che carichi.

Con

Codice: [Seleziona]
content.document.body.innerHTML
hai tutto il codice HTML all'interno del tag BODY.
A questo punto dovresti fare qualcosa del tipo

Codice: [Seleziona]
var a = content.document.body.innerHTML;
content.document.body.innerHTML=a.replace(/Mozilla/g,"Bozilla")

Per altre finalità magari ti servirebbe invece di ripulire il codice da tutti i tag HTML, cosa che si può fare attraverso una espressione regolare.

Offline gettysburg1863

  • Post: 5
Re: [Developer] Leggere HTML
« Risposta #2 il: 16 Luglio 2009 14:09:30 »
e se ho una pagina fatta da piu frames? come di quale ottengo il codice? cmq grazie della celere risposta...  :)

Offline klades

  • Moderatore
  • Post: 5788
    • http://www.nic-nac-project.org/~kaosmos
Re: [Developer] Leggere HTML
« Risposta #3 il: 16 Luglio 2009 14:18:39 »
Prego :-)

Per i frames devi prima verificare se ci sono testando il valore di

Codice: [Seleziona]
content.frames.length
Se ci sono, devi fare una scansione recursiva, tenendo presente che il codice di BODY lo troverai con

Codice: [Seleziona]
var win = content.frames[i];
var htmlCode = win.document.body.innerHTML

La variabile i naturalmente sarà l'indice del ciclo for che usi per la scansione dei frames.

Offline gettysburg1863

  • Post: 5
Re: [Developer] Leggere HTML
« Risposta #4 il: 16 Luglio 2009 14:56:25 »
perfettissimo... un'ultima cosetta... per la ricerca di una parola o di un tag nel codice html come posso fare? cioè tu hai mostrato un esempio di replace... non c'è qulacosa tipo find("word")? grazie mille ancora!!!

Offline klades

  • Moderatore
  • Post: 5788
    • http://www.nic-nac-project.org/~kaosmos
Re: [Developer] Leggere HTML
« Risposta #5 il: 20 Luglio 2009 10:15:00 »
Non mi è molto chiaro il senso di questa tua ultima richiesta, perché dipende da cosa vuoi fare: per esempio portare il cursore alla prima occorrenza, evidenziare le parole ecc.

Spesso il risultato si ottiene attraverso un replace, per integrare il codice HTML (per esempio nel caso di evidenziazione).

Per trovare semplicemente le occorenze potresti usare il metodo indexOf.

Offline gettysburg1863

  • Post: 5
Re: [Developer] Leggere HTML
« Risposta #6 il: 20 Luglio 2009 13:56:30 »
mi scuso per l'incomprensiblità della domanda... dovuta all'ignoranza!  :oops: mi sono dato una letta a un po di materiale sull'argomento. quel che cercavo era un metodo per accedere ai nodi DOM di un documento; ho usato getElementById e getElementByTagName... basta acculturarsi :) in ogni caso, grazie 1000 per la cortesia... ma temo che romperò di nuovo con altre domande :)

Offline gettysburg1863

  • Post: 5
Re: [Developer] Leggere HTML
« Risposta #7 il: 20 Luglio 2009 13:59:50 »
ecco, per esempio... su https://developer.mozilla.org/en/Code_snippets/On_page_load spiega come far eseguire del codice al caricamento di una pagina... perfetto, quel che mi serviva. pero se faccio una minuscola variante ovvero:
Codice: [Seleziona]
window.addEventListener("load", function() { myExtension.init(); }, false);

var myExtension = {
  init: function() {
    var appcontent = document.getElementById("appcontent");   // browser
    if(appcontent)
      appcontent.addEventListener("DOMContentLoaded", myExtension.onPageLoad, true);
    var messagepane = document.getElementById("messagepane"); // mail
    if(messagepane)
      messagepane.addEventListener("load", function () { myExtension.onPageLoad(); }, true);
  },

  onPageLoad: function(aEvent) {
     alert("loaded");
  }
}
succede che mi trovo spesso molti alert, 2 3 o piu. ho pensato che ne faccia uno per ogni frame e iframe... ma come evito questo problema?

0 Utenti e 1 Visitatore stanno visualizzando questo topic.