[英]How can I detect IE10 from JS when browser mode is IE9?
盡管瀏覽器模式設置,但是當瀏覽器是IE10時,我需要使用簡單的javascript(無框架)進行檢測。
一些評論: - 我確實需要檢測瀏覽器,它不是檢測功能的選項,因為目的是減輕瀏覽器錯誤。 - 我嘗試了常見的方式(比如UA字符串或功能檢測)沒有成功,當我將瀏覽器模式切換到IE9時,每個可能暗示在IE10中的方面都消失了。
如果你想檢測你正在使用的瀏覽器,IE有一個特殊的功能,稱為條件編譯 - http://www.javascriptkit.com/javatutors/conditionalcompile.shtml
要獲得該版本,您需要使用@_jscript_version
。 所以在Javascript中,我會使用:
<script type="text/javascript">
var isIE10 = false;
/*@cc_on
if (/^10/.test(@_jscript_version)) {
isIE10 = true;
}
@*/
console.log(isIE10);
</script>
我沒有IE10,但在使用IE9進行測試時,似乎可行。 如果我將瀏覽器模式更改為7或8,則@_jscript_version
具有真正的瀏覽器JScript版本(在我的情況下它保持為9
)。
要查看JScript版本列表,您可以在此處查看它們 - http://en.wikipedia.org/wiki/JScript#Versions 。 它沒有列出IE10,但我認為它是10.在IE9之前,他們使用與瀏覽器版本不一致的數字,但是可能在9之后的正確軌道上。你必須看看默認的@_jscript_version
是什么10,但我認為它以“10”開頭並且可能有一個次要版本。
更新:
為避免縮小評論,您可以使用以下內容:
var IE = (function () {
"use strict";
var ret, isTheBrowser,
actualVersion,
jscriptMap, jscriptVersion;
isTheBrowser = false;
jscriptMap = {
"5.5": "5.5",
"5.6": "6",
"5.7": "7",
"5.8": "8",
"9": "9",
"10": "10"
};
jscriptVersion = new Function("/*@cc_on return @_jscript_version; @*/")();
if (jscriptVersion !== undefined) {
isTheBrowser = true;
actualVersion = jscriptMap[jscriptVersion];
}
ret = {
isTheBrowser: isTheBrowser,
actualVersion: actualVersion
};
return ret;
}());
並訪問IE.isTheBrowser
和IE.actualVersion
(從JScript版本的內部值轉換)等屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.