IE führt zeitweise keine dynamisch hinzugefügte Skriptdatei aus

9

Wir haben JavaScript, das ein Skript-Include in eine dynamische Ressource auf unserer Webseite schreibt, damit wir einige Informationen zwischen Seiten austauschen können, die von verschiedenen Servern stammen, die Cross-Site-Scripting-Beschränkungen unterliegen.

Die Idee ist, dass der Browser die JavaScript-Datei anfordert, die von einer dynamischen Ressource auf der Serverseite bedient wird (die auch einige serverseitige Informationen in die Anfrage einfügt). Die JavaScript-Datei wird dann vom Browser ausgeführt, wenn sie der Seite hinzugefügt wird.

In Internet Explorer ist ein Problem aufgetreten, bei dem das in der Antwort zurückgegebene JavaScript nicht zeitweise ausgeführt wird, wenn es der Seite hinzugefügt wird. Die Überprüfung einer Fiddler-HTTP-Ablaufverfolgung bei Auftreten des Problems zeigt, dass das Skript erfolgreich an den Browser zurückgegeben wird.

Um dies zuverlässiger zu testen, habe ich den Code so geändert, dass das Skript 1000 Mal hintereinander in einer Schleife ausgeführt wird:

%Vor%

Das von ajavascriptfile.js zurückgegebene Skript erhöht einfach einen Zähler auf meiner Seite:

%Vor%

In diesem Test werden keine Ausnahmen abgefangen oder alarmiert.

Wenn dies korrekt ausgeführt wird, sollte der Zähler auf 1000 gehen (was er in Firefox tut). In IE6 ist es jedoch durchschnittlich 900-950, IE7 ist etwa 995-998 und IE8 ist eine schockierende 750-800.

Hat jemand anderes festgestellt, dass Internet Explorer dynamisch enthaltene Skripts nicht ausführt? Wenn ja, können Sie dieses Problem umgehen?

    
james.bunt 11.02.2010, 03:21
quelle

2 Antworten

1

Es kann sein, dass die Skripte nicht in der Reihenfolge in der Schlange stehen, in der sie dem Kopf hinzugefügt werden, sondern interpretiert werden, sobald sie aktiv sind, entweder aus dem Cache oder einem Download. Wenn das zuletzt angeforderte Skript zuerst geladen wird, kann dies zu einem Problem führen.

IE8 erlaubt 6 gleichzeitige Skripte, ich denke IE7 erlaubt 4, und 6 erlaubt 2.

Ich habe das auch in Opera, Chrome und Safari gesehen (aber noch nicht Firefox). Wenn ich also mehr als ein Skript lade, führe ich alle Befehle aus, bis ich weiß, dass die Ressourcen verfügbar sind - normalerweise durch Testen des Typs eine Funktion aus der erforderlichen Datei und einen Timer-Callback, falls nicht gefunden.

    
kennebec 11.02.2010 04:18
quelle
0

Internet Explorer kann die Skriptdatei zwischenspeichern. Versuchen Sie, dem src-Include zusätzliche Entropie hinzuzufügen:

%Vor%     
leepowers 11.02.2010 03:31
quelle

Tags und Links