Ho qualche problema con questa mia funzione, sviluppata per un'estensione di Firefox:
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');
}
L'obiettivo di questo script dovrebbe essere:
- 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:
Errore: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]
File sorgente: chrome://searchnote/content/index_builder.js
Riga: 49
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).

Potete darmi qualche dritta su come risolvere il problema?

Grazie a chi risponde... statemi bene...