Domanda

Ho 2 funzioni js, richiesta () e la risposta (). Richiesta inietta un tag script dinamici per DOM, il caricamento di alcuni "script" dal server. Lo script che proviene dal server è impostato per chiamare risposta ().

Ora, se faccio 5 chiamate una dopo l'altra immediatamente, e se prima è ancora in attesa, i prossimi 4 chiamate sono ancora fatti, la risposta ritorna (ho visto che da Firebug), ma la risposta () non viene chiamato fino ai primi si ritorna.
Questo sta accadendo solo in Firefox. :(

Perché questo non fare la chiamata di funzione?

PS:

  1. se prima richiesta è in ritardo, mi Non si preoccupano di suoi risultati, voglio l'ultimo a caricare e chiamando risposta senza ritardi ..
  2. ho provato $ .ajax con dataType insieme a 'jsonp', inserimento stile javascript puro di tag script e $ .getScript. Nulla sembra funzionare bene con FF: (

Modifica: Per coloro che hanno richiesto esempi di codice:

function request(){

    var URL = 'http://xxx.xxx.xxx.xxx/cgi-bin/response.php?callback=?';
    callHandle = $.getScript(URL);

}

function response(data){

      alert(data);
}

la funzione di richiesta chiama script php del server, che ha seguente codice:

$data = $_GET['callback']; //using just to identify request uniquely.
sleep(rand(1,10));
echo "response(".$data.")";

Ora, se prima richiesta dura 10 secondi, e la seconda richiesta prende 2 secondi, la risposta dovrebbe essere chiamato di nuovo per la seconda richiesta. Ma è sempre la risposta, ma invece di allertare, è in attesa di prima richiesta per completare in Firefox. Perché è così?

È stato utile?

Soluzione

Ho visto la stessa cosa: Firefox gestire le risposte di ritorno (inclusioni javascript fatto con document.createElement ( 'script') e li aggiunge alla Head-Node) nell'ordine in cui gli elementi di script sono stati aggiunti al documento . Dal punto di vista del programmatore di programmazione Questo semplifica. Tuttavia, penso che si dovrebbe trattare questo come un dettaglio di implementazione da questo browser (versione), non una garanzia. Google Chrome esegue gli script inclusi in qualsiasi ordine (inaspettato).

Questo comportamento è già chiama "comportamento Vecchio firefox" quando si cerca di Firefox 4 e la conformità HTML5 ( http: //hsivonen.iki.fi/script-execution/ )

Il comportamento del Vecchio firefox

Script-inserita non asincrona esterna, script non Posticipa eseguite nel ordine in cui sono stati inseriti nel documento.

Hai provato inserendo i propri script con document.write?

Altri suggerimenti

A meno che questo è per ragioni didattiche, io suggerisco di usare una libreria che si occupa nello specifico di queste idiosincrasie del browser. per esempio: http://code.google.com/p/controljs/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top