Oggetto XHR [v.2] -
12-27-2007
, 05:30 PM
Ciao a tutti,
di recente mi sono creato un'oggetto XHR mio che in qualche modo inviasse
una richiesta al server abortendo eventualmente quella che era pendente, e
il punto in cui sono arrivato è più o meno quello che ho postato un po' di
tempo fa qui: <twgp23hfmdsp$.g5ct3aomqmr8.dlg (AT) 40tude (DOT) net>
Premesso che grazie a Zero e alla sua pazienza e ad un vecchio 3d
<http://groups.google.it/group/it.comp.lang.javascript/browse_thread/thread/c65b0ec0ccacd626/>
mi sono fatto una cultura dell'oggetto XMLHttpRequest e relativi metodi...
scoprendo magagne e differenze implementative tra IE e FF...
Cmq il mio problema è lo stesso che già accennavo alla fine dell'altro 3d e
che ora sintetizzo:
senza entrare troppo nel merito del codice l'idea era che se c'era una
richiesta in fase di ricezione venisse abortita esplicitamente attraverso
il metodo abort() dell'oggetto XMLHttpRequest indistintamente da IE e FF
e subito di seguito venisse inviata la nuova richiesta.
Il problema sta in questo passaggio: la nuova richiesta e relativa
riassegnazione dell'evento onreadystatechange la faccio all'interno di
onreadystatechange stesso all'evento scatenato da abort(), quest'operazione
non è gradita da IE che alterna comportamenti come crash o piantamento o
cmq impossibilità di riutilizzo dell'oggetto...
Mi sono venute in mente un paio di soluzioni: entrambe fanno uso di
setTimeout evocato nell'onreadystatechange o meno, ritardando la nuova
richiesta di un tempo anche breve
Però questa soluzione non mi fa impazzire, per la preoccupazione che un
tempo troppo breve possa non essere sufficiente e possa quindi mandare in
tilt il browser... (forse preoccupazione infondata perchè al browser serve
solo un istante per uscire dal contesto dell'onreadystatechange)
Gli approcci che userei sono corretti, o si può fare anche in altro modo? |