Warum berücksichtigt Internet Explorer 11 bedingte Kommentare nicht, selbst wenn der Internet Explorer 8-Dokumentmodus emuliert wird?


110

Ich verwende die neuen Internet Explorer 11- Entwicklertools, um den Dokumentmodus auf "8" zu schalten, aber bedingte Kommentare werden weiterhin ignoriert, dh sie werden nicht ordnungsgemäß analysiert und verhalten sich wie normale Kommentare. Daher wird keine referenzierte Datei innerhalb des bedingten Kommentars vom Browser angefordert / geladen.

Warum passiert das? Ist es ein Fehler?

Wenn Sie der Meinung sind, dass dies tatsächlich ein Fehler ist, der behoben werden muss, gehen Sie hinein und sagen Sie, dass auch Sie dies im Microsoft-Fehlerbericht reproduzieren können, der für dieses Problem gemeldet wird:
Bedingte Kommentare funktionieren nicht, wenn Sie Dokumentmodi über F12 Developer emulieren Werkzeuge .

Update: Es wurde berichtet, dass dieses Problem im genannten Fehlerbericht behoben wurde.


18
Ich stelle mir die gleiche Frage! Ich weiß, dass sie die bedingten Kommentare in IE10 gelöscht haben, aber meiner Meinung nach sollte der Emulator sie beim Testen auf ältere Browser berücksichtigen.
Alexander Rechsteiner

12
Dies macht die Funktion in der Tat unbrauchbar.
Thasmo

3
Die eigentliche Frage ist, warum Sie den Kompatibilitätsmodus verwenden. Mein Rat ist, Kompatibilitätsmodus wie die Pest zu vermeiden. Es ist sicherlich nicht zum Testen geeignet, unabhängig von dem von Ihnen beschriebenen Problem, da es bekannte Fehler und Macken gibt, die bis zur Einführung des Kompatibilitätsmodus zurückreichen. Wenn Sie auf Abwärtskompatibilität testen, müssen Sie wirklich eine echte Kopie von IE8 (und IE9 usw.) verwenden. Gehen Sie zu modern.ie und laden Sie die VMs herunter, die sie zum Testen bereitstellen.
Spudley

19
Im IE-Bug-Tracker ist ein Fehler offen. Ich ermutige alle, Microsoft zu besuchen und ihm mitzuteilen, dass Sie dies reproduzieren können. connect.microsoft.com/IE/feedback/details/806767/…
Evgeny

15
Ich denke, die Verwendung des Kompatibilitätsmodus zum Testen ist sinnvoller als das Herunterladen eines Bildes mit etwa einem halben Gigabyte für jeden Browser. Es gibt also Fehler (und dies ist wahrscheinlich einer von ihnen), aber in 99% der Fälle funktioniert es einfach.
Rolf

Antworten:


29

nach zuJacob Rossi [MSFT]

Dies sollte in Update 1 für IE11 behoben werden, das letzte Woche veröffentlicht wurde .

Das wurde am 22. April 2014 veröffentlicht.

Wenn ich selbst ein paar Tests durchführe, scheint dies behoben zu sein und alles läuft wieder reibungslos, um den erstaunlichsten Browser zu testen, der jemals produziert wurde ... Internet Explorer!


4
Dies muss mehr positiv bewertet werden. Ich musste zwei Stapelüberlaufantworten durchforsten, um hierher zu kommen.
Tek

@Lynda: Könnten Sie Ihre IE11-Version veröffentlichen? meins ist 11.0.9600.17631
Mohamed Hussain

1
@MohamedHussain - Meine Version ist 11.0.9600.17690IC.
L84

3
Sie müssen sarkastisch sein.
Paddotk

Über IE als "erstaunlichsten Browser"?
Paddotk

20

Ich habe gerade versucht, dies in Internet Explorer 11 unter Windows 7 zu verwenden, um sicherzustellen, dass meine verwendeten semantischen HTML5- Elemente für Internet Explorer 8 und niedriger erstellt wurden (über bedingte Kommentare), und der Browser ignoriert sie einfach. -_-

Diese Funktion funktionierte in Internet Explorer 10 einwandfrei , und Microsoft musste nur daran basteln, nicht wahr?

<!--[if lte IE 8]><script src="ie8-html5.js"></script><![endif]-->

Abgesehen davon genieße ich tatsächlich den Internet Explorer, was eine Änderung bewirkt.


4
Ja, IE 11 ist eine bessere Erfahrung mit all den Animationen, die tatsächlich funktionieren :). Ja, MS hat in der Vergangenheit gerade an Dingen "herumgebastelt", wenn Benutzer sich an sie gewöhnen. Schauen Sie sich an, was sie mit Windows XP gemacht haben ... "Reparieren, was nicht kaputt ist", würden einige Leute sagen. Wie auch immer, das ist scheiße
Rolf

9
Internet Explorer-Browser sind so schlecht. Keine Konsistenz zwischen den Versionen. Wer zum Teufel hat das entwickelt? Sogar meine Großmutter könnte einen besseren Job machen!
Adrien Be

4
BEARBEITEN: Sie beheben dies (oder versuchen es) seit dem 22. Januar 2014 connect.microsoft.com/IE/feedback/details/806767/…
Adrien Be

@AdrienBe Nun, das ist sicherlich ein Schritt in die richtige Richtung.
DylRicho

1
@Anthony Meine Antwort ist falsch? Wie? Es sagt im Grunde, was Sie gerade gesagt haben.
DylRicho

17

Dies hat bei mir funktioniert und scheint die eleganteste / einfachste Lösung zu sein ( Internet Explorer 10 und Internet Explorer 11 sind wohl die einzigen Browser, die dies unterstützen -ms-high-contract):

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* IE10+ specific styles go here */
}

Großartig, danke. Wann wird Microsoft dieses Durcheinander beenden?
Kohjah Breese

Tank dafür, IE 11 ehren nicht alte bedingte Methode. <! - [if IE]>
Gino

8

Ich bin kürzlich auf das gleiche Problem gestoßen. Ich fand auch, dass einige bedingte Kommentare funktionieren:

  • gtund hat gut ltfunktioniert
  • gteund hat ltenie funktioniert

Eine mögliche Lösung wäre also, die bedingten Anweisungen zu ändern, um die Operatoren gtund zu verwenden lt.

Die andere Alternative, die ich nützlicher fand, war die Verwendung eines Dienstes wie Browserstack .


8

Ich habe eine andere Lösung dafür.

Internet Explorer 11 mit aktiviertem Internet Explorer 8-Kompatibilitätsmodus enthält die Zeichenfolge 'MSIE 8.0', also:

(PHP-Beispiel)

if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0') !== false) {
    $head[] = sprintf('<link rel="stylesheet" href="ie8.css" />');
}

2
Ich habe die Dokumentmodi getestet und es scheint, dass der Benutzeragent nicht geändert wird?!
mgutt

@mgutt Du hast recht. Im Emulationsmodus gibt es zwei Optionen: Dokumentmodus und Benutzeragent. Der Dokumentmodus ändert die Funktionsweise des Browsers und das Rendern der Seite, und der Benutzeragent ändert, welcher Browser die Website über die Browserversion informiert. (In meinem Beispiel ist es die Variable $ _SERVER ['HTTP_USER_AGENT'], die diese Informationen enthält.) Grundsätzlich müssen Sie beide Optionen beispielsweise in IE8 ändern.
Andrei Konstantinov

@ Andrew Danke. Jetzt habe ich die Einstellung gefunden. Das Problem war die deutsche Übersetzung. Sie übersetzten "User Agent" mit "Zeichenfolge des Benutzer-Agents" und ich dachte, dies bedeutete den Zeichensatz. Einige Dinge sollten nicht übersetzt werden;)
mgutt

2
Diese Lösung ist die beste. Ich habe es in ASP.NET MVC Razor konvertiert und es funktioniert perfekt: @ {if (Request.UserAgent.Contains ("MSIE 8.0")) {/ * Ihr Metatag hier * /}}
Valerio Gentile

Diese Seite ist eine praktische Referenz dafür, wie alle Permutationen von Benutzeragentenzeichenfolgen aussehen: useragentstring.com/pages/Internet%20Explorer
Drew

4

Ich hatte das gleiche Problem - es hat mich den ganzen Morgen verrückt gemacht. Ich habe Modernizr hinzugefügt und alle Optionen ausgewählt, einschließlich yepnope.js.

Jetzt sieht mein Test so aus:

Modernizr.load({
            test: Modernizr.canvas,
            nope: ['Content/Site-ie-8.min.css', 'Content/font-awesome-ie7.min.css']
});

In diesem Fall teste ich auf Canvas (was vor Internet Explorer 9 nicht unterstützt wurde), also lade ich meinen bedingten Inhalt. Dies funktioniert jetzt beim Wechseln des Browsermodus in den Entwicklertools von Internet Explorer 11.


Bedingte Kommentare basieren nicht auf Skripten oder Code von Drittanbietern.
Walf

@Walf - stimmt, aber sie werden auch im IE nicht unterstützt. Siehe hier: msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
El Kabong

3

Ich habe es hier nicht erwähnt gesehen, aber in diesem Fehlerbericht wird darauf hingewiesen, dass die bedingten Kommentare wie erwartet funktionieren, wenn Sie die Einstellungen für die Kompatibilitätsansicht ändern. So:

  1. Klicken Sie in IE11 auf "Extras"
  2. Einstellungen der Kompatibilitätsansicht
  3. Geben Sie die URL ein und klicken Sie auf Hinzufügen

Scheint jetzt gut auf meinem lokalen Host zu funktionieren. Ich habe dies nicht ausführlich getestet, aber vielleicht hilft es jemandem.


Besucher Ihrer Website müssten jedoch dasselbe tun, um das gleiche Ergebnis zu erzielen. Es nutzlos machen.
Paddotk

Ja. Dies gilt jedoch, wenn Sie ältere Versionen von IE über IE11-Entwicklertools testen. Wenn Sie also IE11 verwenden, aber als IE8 ausgeführt werden, funktionieren die bedingten Kommentare nicht. Für jemanden, der tatsächlich IE8 verwendet, funktionieren die bedingten Kommentare. Wahrscheinlich ^ _ ^
Just Plain High

1

Einige der bedingten Kommentare funktionieren wie ' gt' und ' lt', <!--[if IE 8]>funktionieren aber beispielsweise nicht. Dies ist sicherlich unpraktisch für Entwickler, die versuchen möchten, wie ihre Webseiten in verschiedenen Versionen von Internet Explorer-Browsern aussehen, aber es sind nicht alle schlechten Nachrichten.

Obwohl die bedingten Kommentare nicht funktionieren, können Sie testen, wie Ihre Webseite in jeder Internet Explorer-Version aussieht, indem Sie die Stylesheets einzeln anhängen: Angenommen, Sie haben ein Stylesheet für Firefox, Chrome, Internet Explorer 10 und Internet Explorer 11 mit dem Namen ' screen.css' und ein weiteres Stylesheet NUR für Internet Explorer 9 mit dem Namen ' screen-ie9.css' und ein weiteres NUR für Internet Explorer 8 mit dem Namen ' screen-ie8.css'.

So testen Sie Ihre Webseiten NUR für Internet Explorer 9:

<link rel="stylesheet" href="path/css/screen.css"     type="text/css" />
<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

und setzen Sie in den F12-Entwicklertools im Abschnitt Emulation den 'Dokumentmodus' auf '9' und die 'Benutzeragentenzeichenfolge' auf 'Internet Explorer 9'. Der Dokumentmodus ist der Standard, den Internet Explorer 9 verwendet, und die Zeichenfolge des Benutzeragenten ist der Browser selbst.

PS: Ich gehe davon aus, dass das ' screen.css' Ihr Basis-Stylesheet ist, weshalb ich es zuerst aufrufe, als die Internet Explorer 9-Korrekturen später durch Aufrufen von ' screen-ie9.css' zweitens zu "überschreiben" .

Auf diese Weise können Sie "sicher" sein (ich muss mit VMs testen, um das Wort "sicher" ohne Anführungszeichen zu schreiben), dass Sie Ihre Webseite in einem Internet Explorer 9-Browser anzeigen. Wenn Sie mit dem Testen und Stylen in Internet Explorer 9 fertig sind und mit Internet Explorer 8 testen möchten, können Sie auf einfache Weise denselben Trick ausführen, indem Sie diesen ersetzen:

<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

mit diesem:

<link rel="stylesheet" href="path/css/screen-ie8.css" type="text/css" />

Es ist also nur eine Frage der geringfügigen Unannehmlichkeiten von Microsoft, ABER die neuen F12-Entwicklertools bieten VIELE erstaunliche Funktionen, was dies nicht zu einer großen Sache macht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.