儘管瀏覽器模式設置,但瀏覽器爲IE10時,我需要使用普通的javascript(無框架)進行檢測。當瀏覽器模式爲IE9時,如何從JS中檢測IE10?
一些評論: - 我確實需要檢測瀏覽器,它不是檢測功能的選項,因爲目的是減輕瀏覽器的bug。 - 當我將瀏覽器模式切換到IE9時,我試過了常見的方式(如UA字符串或特徵檢測),但可能暗示在IE10中消失的每個方面。
儘管瀏覽器模式設置,但瀏覽器爲IE10時,我需要使用普通的javascript(無框架)進行檢測。當瀏覽器模式爲IE9時,如何從JS中檢測IE10?
一些評論: - 我確實需要檢測瀏覽器,它不是檢測功能的選項,因爲目的是減輕瀏覽器的bug。 - 當我將瀏覽器模式切換到IE9時,我試過了常見的方式(如UA字符串或特徵檢測),但可能暗示在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」開頭,並且可能有一個小版本。
UPDATE:
爲了避免意見微小,可以使用類似:
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版本)。
究竟是什麼是你試圖緩解的「瀏覽器錯誤」? – Ian 2013-04-04 19:24:58
我不確定更改瀏覽器模式是否會更改內部變量,但是可以使用條件編譯並檢查「@ _jscript_version」是否以「10」(主要版本)開頭。 – Ian 2013-04-04 19:34:37
在某些情況下,閃光片不覆蓋整個容器區域,它們是1px較窄。你能否詳細說明你的解決方案,它不會是一個js解決方案。 – gztomas 2013-04-04 19:37:38