当浏览器模式为IE9时,如何从JS检测IE10 ?
How can I detect IE10 from JS when browser mode is IE9?
我需要用纯javascript(没有框架)检测浏览器何时是IE10,尽管浏览器模式设置
一些评论:-我确实需要检测浏览器,它不是一个选项来检测功能,因为目的是减轻浏览器的错误。-我尝试过常见的方法(如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之前,他们使用的数字与浏览器版本不一致,但可能从IE9开始就走上了正确的轨道。您必须看到@_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版本的内部值翻译过来的)。
相关文章:
- 当pswp库关闭时,Photoswipe.js检测到事件
- 使用less.js检测旧版本的ie,然后使用filter
- 使用JS检测所有JS错误
- Node.js-检测图像优化
- HTML/JS-检测Android软件版本(并切换css文件)
- JQuery / JS:检测用户的滚动尝试,没有任何窗口溢出滚动到
- Node.js:检测到使用 fs.createWriteStream() 打开的文件被删除
- 如何.js检测模型已更改
- HTML/JS 检测图像上的区域
- 使用 js 检测浏览器扩展
- Three.js检测到webgl支持并回退到常规画布
- 如何通过js检测flash播放器版本
- JS:检测没有jQuery的右键点击(内联)
- 使用Node.js检测Mongodb中的数据更改
- JS检测浏览器宽度和高度在Chrome中的工作;Safari,但不是IE9或FF9
- JS检测文本字段更改
- JS检测浏览器分辨率在Chrome中工作;Safari,但不是IE9或FF9
- 使用Prototype.js检测鼠标是否接触到元素
- Angular.js检测双向属性的存在
- 如何使用angular.js检测盖帽锁定是否打开