Abbiamo qualche JavaScript che scrive uno script incluso in una risorsa dinamica nella nostra pagina Web per permetterci di comunicare alcune informazioni tra le pagine servite da diversi server che sono soggetti a restrizioni di scripting cross site.IE a intermittenza non esegue un file di script aggiunto dinamicamente
L'idea è che il browser richieda il file JavaScript che è servito da una risorsa dinamica sul lato server (che mette anche alcune informazioni lato server nella richiesta). Il file JavaScript viene quindi eseguito dal browser quando viene aggiunto alla pagina.
Abbiamo riscontrato un problema con Internet Explorer in cui il codice JavaScript restituito nella risposta non viene eseguito in modo intermittente quando viene aggiunto alla pagina. Ispezionare una traccia HTTP Fiddler quando si verifica il problema mostra che lo script è stato correttamente restituito al browser.
per testare questo in modo più affidabile, ho modificato il codice che aggiunge lo script per l'esecuzione 1000 volte in un ciclo, come di seguito:
for (var i = 1; i <= 1000; i++) {
try {
var script = document.createElement("SCRIPT");
script.src = serverHome + "/ajavascriptfile.js?token=" + token + "&num=" + i;
script.id = token;
document.getElementsByTagName("HEAD")[0].appendChild(script);
} catch (e) {
alert(e);
}
}
Lo script restituito da ajavascriptfile.js
incrementa semplicemente un contatore sulla mia pagina:
var output = document.getElementById("output");
output.innerHTML = parseInt(output.innerHTML) + 1;
In questo test non si verificano mai interferenze o allarmi.
Se eseguito correttamente, il contatore dovrebbe arrivare a 1000 (cosa che fa in Firefox). Tuttavia in IE6 è in media 900-950, IE7 è circa 995-998 e IE8 è uno scioccante 750-800.
Qualcuno ha riscontrato che Internet Explorer non esegue script inclusi dinamicamente? Se è così, sai come risolvere questo problema?
Avete un ' ' dichiarato nella pagina per caso? –
No Non ho nella pagina. –
Sto lavorando a questo problema, ma non sono sicuro perché è sbagliato! – JustEngland