16 Stimmen

IE6/7/8 Kein Speicherplatz vorhanden?

Ich habe heute einige Browser-übergreifende Tests zu bestimmten Funktionen durchgeführt und bin dabei auf ein ziemlich raffiniertes kleines Juwel gestoßen.

Im IE8: Out of memory at line: 99

Im IE7: Out of memory at line: 100

Im IE6: Stack overflow at line: 101

Nach dem, was ich herausfinden konnte, ist es in den meisten Fällen, in denen diese Meldungen erscheinen, ein Problem mit einem Array, dessen Anzahl der Elemente größer ist als 65,535 . Ich glaube aber nicht, dass es hier um diese Frage geht.

Die betreffende Funktionalität ist eine Aktion innerhalb einer iframe "Schließen" der aktuellen iframe und "öffnen" eine andere mit jQuery. Es ist tatsächlich auf die schließen/öffnen Interaktion passiert.

Hat jemand so etwas schon einmal gesehen?

bearbeiten : Nach weiteren Untersuchungen scheint es nicht wirklich mit den iframes zusammenzuhängen. Ich bin noch am Suchen, aber ich würde mich über jeden Vorschlag freuen.

11voto

Collin Klopfenstein Punkte 2196

Es stellte sich also heraus, dass es sich um ein Problem mit dem IE handelte und alles andere anders lief... wie üblich.

Ich habe eine Funktion, die ich verwende, um einen Fehler auszulösen, und es ist rekursiv durch Design. Ich wollte, dass der Fehler im Hauptdokument angezeigt wird, nicht in einem Iframe (der auf dieser Website leider häufig verwendet wird). Das Wesentliche meiner Funktion ist wie folgt:

myClass.myErrorFunc = function ( msg ) {
    if ( parent !== window ) {
        parent.myClass.myErrorFunc( msg );
    } else {
        // display the error
    }
}

Das funktioniert hervorragend in Chrome und Firefox. Es rekursiert eine Ebene und zeigt den Fehler im Hauptfenster an, denn sobald es die oberste Ebene erreicht, ist das übergeordnete Fenster selbst. Offenbar ist das übergeordnete Fenster im IE jedoch NIEMALS selbst. Daher die unendliche Rekursion.

Bleiben Sie dran, um eine Lösung zu finden.

Bearbeiten: Offenbar war es ein Problem mit der Verwendung von !== anstelle von != . Als ich es auf != beim zweiten Durchlauf (da dies von einem iframe ), window == parent wertet wahr aus, aber window === parent nicht...

Wie auch immer, ich werde es nehmen...

Vielen Dank für eure Hilfe, Leute.

0voto

Boris Hamanov Punkte 2975

Es scheint, dass Sie zu viel Speicher mit etwas nehmen und IE hat nicht so viel Speicher für diese Art von etwas zugewiesen :) Bei anderen Browsern schon. Wenn Sie einen Blick auf diese Zeilennummern, die Sie haben oder debuggen Sie Ihren Code mit IE8-Entwickler-Tools sollten Sie Ihre Antwort erhalten.

Wenn es sich nicht um eine Rekursion handelt, kann es sich um eine Schleife handeln, die immer mehr Speicher verbraucht, bis sie zu Ende ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X