5

Ich habe eine Website-Seite, die ein Warnfeld anzeigt, wenn Sie einen nicht unterstützten Browser verwenden, IE < = 8. Das funktioniert in IE 8 und darunter gut, aber heute habe ich in IE 10 getestet und es scheint auch diese Bedingung zu lesen. Es zeigt das Warnfeld an, wenn es nicht sollte. Ich habe viele Dinge ausprobiert, aber ich weiß nicht, was das Problem sein könnte. Hier ist ein Teil des Codes:IE10 liest IE8 bedingte Kommentare

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" /> 
    <meta http-equiv="X-UA-Compatible" content="chrome=1"/> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/> 
... 
</head> 
<!--[if lte IE 8]> 
    <div style="position:absolute;bottom:0px;left:0px;background-color:orange;color:white;z-index:1000;width:250px;text-align:center;">This content is best viewed in Chrome, Firefox or any other Modern Browser. <br/><strong>Please Upgrade. </strong></div> 
<![endif]--> 
+0

Reagiert es auch auf IE 10? Könnten Sie eine Bedingung "IE 8 und nicht IE 10" machen? – Renan

+6

@Renan: Das Problem hier ist, dass IE10 keine bedingten Kommentare überhaupt sehen soll *. – BoltClock

+0

(Nun, es sieht sie, aber es sollte nicht versuchen, sie zu interpretieren.) – BoltClock

Antwort

4

Stab im Dunkeln, aber vielleicht ist IE durch Ihre zwei X-UA-Compatible-Header immer verwirrt und so fällt zurück in Kompatibilitätsansicht auf seinen eigenen Willen. Das ist die einzige Situation, die ich mir für IE10 vorstellen kann, bedingte Kommentare zu verarbeiten, anstatt sie direkt zu ignorieren, da in der Kompatibilitätsansicht IE7 emuliert wird, also lte IE 8, und damit Inhalte aufgenommen werden, die durch diesen bedingten Kommentar ausgeblendet werden.

Sehen Sie, was passiert, wenn man sie zu einem einzigen <meta> Tag verbinden:

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

Um ehrlich zu sein, kann ich keinen Grund sehen, den Eintrag für Chrome trotzdem zu haben; Chrome achtet nicht darauf, und selbst wenn dies der Fall wäre, warum in aller Welt möchten Sie, dass es die Chrome-Version 1 nachahmt? – Spudley

+0

@Spudley: Dieser Eintrag ist für Chrome Frame; 1 bedeutet, dass IE wie Chrome wirkt, wenn das Plug-in verfügbar ist. – BoltClock

+0

Nun, Chrome Frame ist auch veraltet, aber ich dachte, es verwendet 'frame = 1' .... hmmm, vielleicht hast du recht. Es ist schon eine Weile her, seit ich es benutzt habe. – Spudley

2

Die „bedingte Kommentare“ -Funktion von IE 10 entfernt wurde, nach Microsoft Dokument Conditional comments. Das bedeutet, dass IE 10 einen "bedingten Kommentar" als einfachen Kommentar ausgibt (was durch HTML-Spezifikationen geschieht).

Dies wurde durch meine Prüfung des Codes in der Frage auf IE 10 bestätigt. Es erscheint keine Warnbox, unabhängig von den Einstellungen des Browser-Modus. Es klingt daher wahrscheinlich, dass die reale Seite einen Syntaxfehler aufweist, der dazu führt, dass ein bestimmter Text als normaler Inhalt angezeigt wird und nicht als "bedingter Kommentar".

+1

Interessant, es gibt also keine Kompatibilitätsansicht von Voodoo. (Ich musste raten, weil ich im Moment keine Testumgebung zur Verfügung habe, elend.) – BoltClock

0

Also habe ich debuggen und versuchen, den Code zu beheben, so dass es funktionieren würde und ich denke, zwei Dinge könnten es behoben haben.
Erstens: Der bedingte Kommentar wurde vor dem Öffnen des Body-Tags deklariert, und ich nehme an, da es ein Div-Element ist, muss es mit dem Body-Tag enthalten sein. Bewegen Sie es in den Körper könnte es behoben haben.
Zweitens: Ich hatte auch eine Skript-Tag mit dem Kopf des Dokuments, das einige jQuery-Skripts darin hatte. Wenn Sie dieses Tag an das Ende des body -Tags verschieben, kann das Problem möglicherweise ebenfalls behoben werden.