IE 11互換モードがオンになっていて、JavaScriptを使用してWebサイトにアクセスしているときにチェックする方法を知っている人はいますか?
リストの互換表示設定にURLを追加しました。しかし、私がするとき
navigator.userAgent
開発者ツールでは、戻ります
Mozilla/5.0(Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; InfoPath.3; rv :11.0)Geckoのような
MicrosoftのWebサイト( http://msdn.Microsoft.com/en-us/library/ie/hh869301(v = vs.85).aspx )を見ると、
互換(「互換」)およびブラウザ(「MSIE」)トークンは削除されました。
ページがjavascriptを介して互換ビューを使用しているかどうかを検出するためのヘルプは、本当に役立ちます。前もって感謝します。
[〜#〜] solved [〜#〜]
この質問に対する答えを自分で探している間、私は別のスレッドでNenad Bulatovicからのこの解決策を見つけましたが、彼の応答は正しい答えとしてマークされていませんでした。これをIE11でテストし、IE5にダウングレードしたところ、IE7-IE11で機能することがわかりました。誰か他の人が便利だと思った場合に備えて、ここで共有したかったのです。
iecheck.js
function trueOrFalse() {
return true;
}
function IeVersion() {
//Set defaults
var value = {
IsIE: false,
TrueVersion: 0,
ActingVersion: 0,
CompatibilityMode: false
};
//Try to find the Trident version number
var trident = navigator.userAgent.match(/Trident\/(\d+)/);
if (trident) {
value.IsIE = true;
//Convert from the Trident version number to the IE version number
value.TrueVersion = parseInt(trident[1], 10) + 4;
}
//Try to find the MSIE number
var msie = navigator.userAgent.match(/MSIE (\d+)/);
if (msie) {
value.IsIE = true;
//Find the IE version number from the user agent string
value.ActingVersion = parseInt(msie[1]);
} else {
//Must be IE 11 in "Edge" mode
value.ActingVersion = value.TrueVersion;
}
//If we have both a Trident and MSIE version number, see if they're different
if (value.IsIE && value.TrueVersion > 0 && value.ActingVersion > 0) {
//In compatibility mode if the trident number doesn't match up with the MSIE number
value.CompatibilityMode = value.TrueVersion != value.ActingVersion;
}
return value;
}
iecheck.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Testing IE Compatibility Mode</title>
<script src="iecheck.js" type="text/javascript"></script>
</head>
<body>
<div id="results">Results: </div>
</br>
<script type="text/javascript">
var ie = IeVersion();
document.write("IsIE: " + ie.IsIE + "</br>");
document.write("TrueVersion: " + ie.TrueVersion + "</br>");
document.write("ActingVersion: " + ie.ActingVersion + "</br>");
document.write("CompatibilityMode: " + ie.CompatibilityMode + "</br>");
</script>
</body>
</html>
ソース: IE10互換モードを検出
これを行うためにJavaScript関数 ie-truth を作成しました。動作方法は、IE 11互換モードがオンの場合、ユーザーエージェント文字列にはIE 11(7.0)としてIE(IE 7の7.0など)の古いバージョンのMSIEバージョン番号。これはIEの古いバージョンの互換モードにも適用されます。 。
これをweb.configファイルに追加すると、アプリケーションはユーザーの設定を上書きします。
<configuration>
...
<system.webServer>
...
<httpProtocol>
<customHeaders>
<clear/>
<add name="X-UA-Compatible" value="IE=8; IE=9; IE=Edge" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
...
</configuration>
「system.webServer」タグをweb.configファイルの最後の「configuration」タグの直前に配置します。さらに、Webサイトを選択してHTTP応答ヘッダーアイコンをクリックすることにより、WebサーバーのIISにX-UA-Compatibleタグを追加できます。
ブラウザーのバージョンを間接的に照会するのではなく、機能検出を使用することをお勧めします。したがって、たとえば、HTML 5履歴API機能が必要な場合は、次のようにします。
if (window.history && window.history.pushState) {
console.log('This is a SUPPORTED browser');
} else {
console.log('NO! You require a browser that does X, please try installing ...');
}
簡単な解決策は、コンソールで試してください:
if (typeof(window.getSelection) == "undefined") {
alert("Unsupported browser!");
} else {
alert("Supported browser");
}
IE9(互換表示を含む)よりも小さいIEを検出します。また、カヌーに応じてChrome 4-14を検出します。
IE 6-8:選択イベントをサポートしますが、window.getSelection()をサポートしませんRef: https://caniuse.com/#feat=selection-api
IE Compatibility Cookbook の ユーザーエージェント の記事によると、ユーザーエージェント文字列が連携している場合にのみ、互換モードが有効になっていることを確認する方法があります。
具体的には、ブラウザトークンがMSIE 7.0
とTridentトークンはTrident/7.0
、それはかなり明確な指標です。それでも、IE11 RTM以降のUA文字列の変更は、将来のバージョンでは予測可能なリソースとして信頼できないことを示しています。
個々のトークンの詳細については、 ユーザーエージェント文字列について トピックを参照してください。 (それは完全に最新ではありませんが、そこにあるものはあなたの興味に関連しているようです。)
お役に立てれば...
-ランス
信頼できる解決策 できます 編集 Internet Explorer 8から11で動作します(<IE8をサポートするために追加のコードが必要です)。
不快副作用(IE <11またはdocumentMode <11-ouch)の場合のみ):
//@ sourceMappingURL=xx.js
(たとえば、jQuery <1.11、または新しい//#
形式に更新されていない他のライブラリ)。動作する基本的な理由は次のとおりです。
var ieRealVersion = Function('return /*@cc_on @_jscript_version@*/;')();
互換モードに関係なく、IEの実際のバージョンを返します。注: