2015-12-23 25 views
7

Perché Firefox interrompe in modo casuale il caricamento del tag <script> aggiunto dinamicamente con js?
Su questa immagine, mi carico in modo dinamico questi script e li aggiungo al DOMPerché quando carico dinamicamente uno script, firefox interrompe in modo casuale il caricamento degli script dei tag?

  • "/assets/js/lib/socket.io-1.3.6.js"
  • "/ attività/js /lib/tweenmax.min.js"
  • "/assets/js/lib.js"
  • "/assets/js/module.js"
  • "/ attività/js/moduli"

Abbastanza a caso, il risultato è s, un grande ritardo tra uno script casuale caricato in modo dinamico e il resto degli script (tra 7-15s)

Pic of firebug which show the timeline loading ressources

Io in realtà carico le mie sceneggiature come quella

function(url, callback){ 
    var elem = document.createElement("script"); 
    elem.async = true; 
    elem.src = url; 
    elem.type = "text/javascript"; 
    elem.onload = callback; 
    document.getElementsByTagName("body")[0].appendChild(elem); 
} 

EDIT:
Quando aggiungo tag di script nella mia pagina html, il ritardo non appare, appare solo quando carico gli script con JavaScript. Ma in realtà ho bisogno di caricare questi script con JavaScript.

C'è un violino del bug https://jsfiddle.net/ccgb0hqr/ Se lo spettacolo avviso fino aggiornare istantaneamente la pagina fino a quando il bug accade

+0

Cosa intendi per tag ?? – AdamJeffers

+0

C'è molta elaborazione tra il caricamento della pagina e l'esecuzione della funzione che carica gli script dinamici? – SoluableNonagon

+0

Non sono sicuro di aver capito correttamente, ma si sta eseguendo la funzione di callback ogni volta che uno script è stato caricato, Se la callback richiede molto tempo, verrà posticipata un'altra roba caricata in questo modo. Se possibile, eseguire i callback una volta caricati tutti gli script? – Shilly

risposta

0

Sembra che sia stato un errore di Firefox. Le versioni più recenti di firefox non hanno questo bug

0

Sembra socket.IO può essere tenuto un po 'di tempo per caricare e poi sparando richieste multiple che sarà bloccare le tue richieste successive (credo che Firefox gestirà 6 at a time), che coincide con la stessa quantità di richieste a /socket.io/, potrebbe anche spiegare la natura intermittente del bug poiché le altre richieste potrebbero entrare prima o dopo socket.io inizializza.

Provare ad escludere socket.io e/oa renderlo l'ultimo script da caricare per vedere se questo aiuta.

Si potrebbe anche voler indagare su specifici socket.io bug come this one.