首页logo
  •  

jonllen

金龙,目前就职于一家软件公司,从事Java和.Net信息安全开发设计。

个人档案

jonllen
心情闪存 | 给他留言
妮称:jonllen
来自:中国. 湖南. 湘潭
简述:金龙,目前就职于一家软件公司,从事Java和.Net信息安全开发设计。
博客日历
当前位置: 首页 > JavaScript > 有趣的IE判断

有趣的IE判断

分类:JavaScript

var ie = document.all;

在以前,如果单只是判断为IE浏览器使用document.all,它返回是文档所有元素数组,可根据数组下标或元素id、name索引元素。这里注意ff等其他非ie浏览器里并不是完全不支持document.all,在quirks模式下使用document.all.id仍然可以获取元素,只不过document.all不能被探知仍然返回false而已。

var ie = !+'\v1';

这是一个仅仅需要7bytes的ie判断,判定借助于IE不支持\v垂直制表符。\v在正则里匹配一个垂直制表符,而在IE里不支持'\v1'被认做为'v1',而其他浏览器则为'1',再使用+强制转换为数字,这时IE里就为NaN而其他浏览器则为数字1,最后再加上!强值转换为Boolean类型,此时候IE里就是true而其他浏览器就是false了。

测试:alert('\v1')(ie:v1,others:1);alert(+'\v1')(ie:NaN,others:1);alert(!+'\v1')(ie:true,others:false);

var ie = !+[1,];

今天在逛园子的时候,发现另外一位童孩全世界最短的IE判定真是强淫,利用了IE与标准浏览器在处理数组的toString方法的差异判定,对于标准游览器,如果数组里面最后一个字符为逗号,JS引擎会自动剔除它,而IE则不会。原来至少需要7bytes,而在今年的1月8日被一个俄国人打破了世界记录,仅仅需要6 bytes!!!

测试:alert([1,])(ie:[1,undefined],others:[1]);alert(+[1,])(ie:NaN,others:1);alert(!+[1,])(ie:true,others:false);

结束语

JavaScript是一门很有艺术的语言,弱变量类型决定着它产生更多的趣味色彩。所有的JavaScript类型都被转化成Boolean类型,可使用!!进行强制转换,空字符串、0、null、undefined等都为false,JavaScript为了区分==还有全等于===计算符号,以比较两个对象是否全相等。

标签:JavaScript ie
  • posted@ 2010-04-26 22:01
  • update@
  • 阅读(9942)
  • 评论(0)

相关文章

评论
暂无任何评论。
发表评论
*必填
回复通知我
*必填