Ho qualche problema con questa mia funzione, sviluppata per un'estensione di Firefox:L'obiettivo di questo script dovrebbe essere:Codice:function SearchNoteIndex_buildIndex () { // l'elenco degli indirizzi da esaminare... var urlStack = new Array (); // ... inizializzato con la home page del navigatore Dewey urlStack.push ('http://opac.bncf.firenze.sbn.it/opac/controller.jsp?action=dewey_browse'); alert ('array inizializzato'); // start debug var wcd = window.content.document; var node = wcd.createElement("div"); node.setAttribute("id", "SearchNoteIndex"); node.setAttribute("style", "font-size:80%;border:solid 1px #000;background-color:#FF0"); var body = wcd.getElementsByTagName("body")[0]; body.appendChild (node); var count = 0; // end debug var url; // finché c'è un indirizzo da esaminare... while (url = urlStack.pop () && count++ < 100) { // estrai la pagina con richiesta AJAX (sincrona!) var req = new XMLHttpRequest (); alert ('oggetto request creato'); req.open ('GET', url, false); alert ('request open eseguito'); req.send (null); alert ('request send eseguito'); while (req.readyState != 4) {} alert ('request pronto'); node.innerHTML = req.responseText; var text = req.responseText.split (/<!--.*-->/).join(''); alert ('testo inserito: ' + text.substring(0,500)); // ... seguono condizioni per l'ammissione all'esamina successiva, i link vengono inseriti nell'array urlStack mediante il metodo push() // start debug document.getElementById("searchnote-indextoolbar-timeleftsecvalue").value = SearchNoteIndex_tree.length; // end debug } alert ('script terminato'); }
- esaminare la pagina iniziale
- trovare tutti i link che soddisfano certi requisiti (li ho omessi nello script perché il problema non si presenta lì)
- inserire tali link nello stack da esaminare, e da lì ripartire da capo
- lo script terminerà quando non ci saranno più link da esaminare (teoricamente possibile per i criteri omessi). Ulteriore terminazione (messa a titolo di debug) avviene raggiunte le 100 iterazioni.
Il problema è che sembra che Firefox non digerisca bene le richieste sincrone (parametro false di open, peraltro necessario visto che devo aspettare per forza l'output prima di proseguire con lo script). Se eseguo lo script, questo è l'errore riportato:Ho provato anche ad impostare quel parametro a true (richiesta asincrona), ed attendere tramite il successivo while che la richiesta sia completata (readyState = 4). Il risultato è che lo script arriva a termine, senza però trovare altri link da elaborare (da un controllo su responseText, il testo ritornato risulta vuoto).Errore: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]
File sorgente: chrome://searchnote/content/index_builder.js
Riga: 49
Potete darmi qualche dritta su come risolvere il problema?
Grazie a chi risponde... statemi bene...

LinkBack URL
About LinkBacks
