gzt*_*mas 5 javascript internet-explorer cross-browser internet-explorer-10
尽管浏览器模式设置,但是当浏览器是IE10时,我需要使用简单的javascript(无框架)进行检测.
一些评论: - 我确实需要检测浏览器,它不是检测功能的选项,因为目的是减轻浏览器错误. - 我尝试了常见的方式(比如UA字符串或功能检测)没有成功,当我将浏览器模式切换到IE9时,每个可能暗示在IE10中的方面都消失了.
Ian*_*Ian 12
如果你想检测你正在使用的浏览器,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>
Run Code Online (Sandbox Code Playgroud)
我没有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;
}());
Run Code Online (Sandbox Code Playgroud)
和访问属性等IE.isTheBrowser
和IE.actualVersion
(从JScript的版本的内部值翻译).
归档时间: |
|
查看次数: |
5983 次 |
最近记录: |