一个奇葩的最短的 IE 版本判断JS脚本


Posted in Javascript onMay 28, 2014

使用 conditional comment 来判断 IE 的版本。嗯,是早早有人提出,但没有认真看代码。昨天刚好在看 CSS3 PIE 的时候看到,觉得是不是不靠谱。今天看到 Paul Irish 也提起,那么,推荐一下吧。这是作者博客上写的:

// ----------------------------------------------------------
// A short snippet for detecting versions of IE in JavaScript
// without resorting to user-agent sniffing
// ----------------------------------------------------------
// If you're not in IE (or IE version is less than 5) then:
//     ie === undefined
// If you're in IE (>=5) then you can determine which version:
//     ie === 7; // IE7
// Thus, to detect IE:
//     if (ie) {}
// And to detect the version:
//     ie === 6 // IE6
//     ie > 7 // IE8, IE9 ...
//     ie < 9 // Anything less than IE9
// ----------------------------------------------------------
// UPDATE: Now using Live NodeList idea from @jdalton
var ie = (function(){
    var undef,
        v = 3,
        div = document.createElement('div'),
        all = div.getElementsByTagName('i');
    while (
        div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
        all[0]
    );
    return v > 4 ? v : undef;
}());

注意一下这个 while 语句。是我觉得最有趣的。对于逗号操作符。我也不熟悉,还只是停留在像变量定义的用法上。比如:

var  a= 'b', c = 'd', e = 'f';
var obj = {
 a: 'b',
 c: 'd',
 e: 'f'
}

问了工友 @kangpangpang,再查了一下书。其实这个比较少见。通常是返回最后一个值。
var a = (1,2,3,5,6,0,9,4); // a === 4

嗯,大概就是这样。挺有趣的。
Javascript 相关文章推荐
Code:findPosX 和 findPosY
Dec 20 Javascript
jQuery.validate 常用方法及需要注意的问题
Mar 20 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
Jun 28 Javascript
ie9 提示'console' 未定义问题的解决方法
Mar 20 Javascript
纯js代码制作的网页时钟特效【附实例】
Mar 30 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
May 16 Javascript
jQuery模仿单选按钮选中效果
Jun 24 Javascript
JQueryEasyUI之DataGrid数据显示
Nov 23 Javascript
jQuery自定义多选下拉框效果
Jun 19 jQuery
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
Nov 04 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
Jul 30 Javascript
Nest.js散列与加密实例详解
Feb 24 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
May 28 #Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
May 28 #Javascript
node.js Web应用框架Express入门指南
May 28 #Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
May 28 #Javascript
浅析JavaScript基本类型与引用类型
May 28 #Javascript
最短的IE判断var ie=!-[1,]分析
May 28 #Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
May 27 #Javascript
You might like
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
php 如何获取数组第一个值
2013/08/06 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
JAVASCRIPT keycode总结
2009/02/04 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
js实现查询商品案例
2020/07/22 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
8个非常实用的Vue自定义指令
2020/12/15 Vue.js
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
Python rstrip()方法实例详解
2018/11/11 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
python将logging模块封装成单独模块并实现动态切换Level方式
2020/05/12 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
连锁超市项目计划书
2014/09/15 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
小学运动会入场词
2015/07/18 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
一文弄懂MySQL索引创建原则
2022/02/28 MySQL