dave: IE8 - IE7 Kompatibilitätsmodus

Hi,

ich habe eine Website die in einem nativem IE8 (in IE9 als IE8 nicht) gelegentlich in den "IE7 Kompatibilitätsmodus" wechselt. Dann zerschießt es das komplette Layout.

Ich habe keine Ahnung warum das geschieht, die einzige mir bekannte Möglichkeit ist über diese meta-Angabe. Die habe ich im Dokument, allerdings nicht mit dem Wert "IE=7", sondern so:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

Welche sonstigen Auslöser für den automatischen Wechsel der Ansicht kann es geben?

Hier noch ein Screenshot wie die Meldung aussieht, wenn in die Kompatibiltätsansicht gewechselt wird.
In den Entwicklertools wird angegeben:
Browser Mode: IE8 Compat View
Document Mode: IE7 Standards

Dieser Fehler tritt nur sporadisch auf (ca. 50/50). Ein reduziertes Beispiel ist mir leider bis jetzt noch nicht gelungen. Bevor ich da weiter rumsuche wollte ich mal die allgemeine Frage stellen, was Auslöser sein können.
Auf der Seite werden die Inhalte mittels Ajax nachgeladen, könnte das ein Grund sein?

~dave

  1. Tach!

    ich habe eine Website die in einem nativem IE8 (in IE9 als IE8 nicht) gelegentlich in den "IE7 Kompatibilitätsmodus" wechselt.
    Ich habe keine Ahnung warum das geschieht,

    Der IE behandelt Seiten ohne explizite Angabe unterschiedlich, wenn diese in Internet und Intranet stehen. Das kann man ihm zwar abgewöhnen, aber das nützt dir als Seitenbetreiber nichts.

    die einzige mir bekannte Möglichkeit ist über diese meta-Angabe. Die habe ich im Dokument, allerdings nicht mit dem Wert "IE=7", sondern so:
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

    Ja, mit einer dieser Angaben kann man ihn um das richtige Rendern bitten.

    dedlfix.

  2. Hallo,

    Welche sonstigen Auslöser für den automatischen Wechsel der Ansicht kann es geben?

    Hier noch ein Screenshot wie die Meldung aussieht, wenn in die Kompatibiltätsansicht gewechselt wird.

    Bestimmte Kombinationen von CSS-Eigenschaften oder ein Fehler in der Script-Engine des IE können dieses Problem hervorrufen. Damit soll sichergestellt werden, dass die Inhalten trotz Crash noch zugänglich bleiben.

    Gruß

    1. Hi,

      Bestimmte Kombinationen von CSS-Eigenschaften oder ein Fehler in der Script-Engine des IE können dieses Problem hervorrufen.

      Hast du da evtl. konkrete Beispiele? Dann könnte ich prüfen ob's das bei mir verursacht …

      ~dave

      1. Hallo,

        Bestimmte Kombinationen von CSS-Eigenschaften oder ein Fehler in der Script-Engine des IE können dieses Problem hervorrufen.

        Hast du da evtl. konkrete Beispiele? Dann könnte ich prüfen ob's das bei mir verursacht …

        Wenn du :first-letter in einem RTL-Kontext floatest.
        Ansonsten nein. Wie gesagt, der IE macht das oft automatisch, wenn er andernfalls crashen würde.

        Gruß

  3. مرحبا

    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    Welche sonstigen Auslöser für den automatischen Wechsel der Ansicht kann es geben?

    Wo im Dokument steht dieses Meta-Tag? IE erwartet diesen Tag als erstes, noch bevor die Zeichenkodierung (charset) kommt.

    mfg

    1. Hi,

      Wo im Dokument steht dieses Meta-Tag? IE erwartet diesen Tag als erstes, noch bevor die Zeichenkodierung (charset) kommt.

      Nach dem meta-Element in dem das charset angegeben wird … allerdings steht hier

      The X-UA-Compatible header is not case sensitive; however, it must appear in the header of the webpage (the HEAD section) before all other elements except for the title element and other meta elements.

      Ich werde es dennoch mal ausprobieren ob's einen Unterschied macht (vermutlich aber erst Montag).

      ~dave

      1. مرحبا

        Nach dem meta-Element in dem das charset angegeben wird

        Nein, es muss noch davor kommen. Idealerweise als header, statt als Meta-Tag (ist nicht Valide).
        Du kannst diesen Tag auch mittels htaccess setzen, wenn du Zugriff drauf hast. Dann ist auch sicher gestellt, dass diese Anweisung als erstes im IE ankommt, vor der Zeichenkodierung oder sonst irgendeiner Ausgabe.

        <IfModule mod_headers.c>  
          Header set X-UA-Compatible "IE=Edge,chrome=1"  
          
          <FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|xpi|safariextz|vcf)$">  
            Header unset X-UA-Compatible  
          </FilesMatch>  
        </IfModule>
        

        mfg

  4. Hi,

    ich hatte im CSS einige Konstrukte dieser Art:

    .selektor:before {  
      background-image: url(foo);  
    }  
    .selektor:hover:before,  
    .selektor:focus:before {  
      background-image: url(foo);  
    }
    

    Die funktionierten im IE8 auch im richtigem Modus nur mäßig. Deshalb habe ich sie durch ein anderes Konstrukt ersetzt.
    Seitdem tritt auch das Problem mit dem Wechsel in den IE7-Kompatibilitätsmodus nicht mehr auf … bis jetzt zumindest …

    ~dave

    1. Da war noch was:

      Es werden Inhalte mit Ajax nachgeladen. Vorm laden bekommt das Element in das diese Inhalte kommen die Klasse "is-loading", nach dem erfolgreichen laden wird diese Klasse entfernt.
      is-loading erzeugt mittels eines ::before-Pseudo-Elements einen Schwarz-Transparenten-Layer über dem Element.

      Wenn man nun zu schnell hintereinander die Klasse hinzugefügt und entfernt hat wechselte der IE8 in den IE7 Kompatibilitätsmodus.