惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
雷峰网
雷峰网
博客园_首页
小众软件
小众软件
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
U
Unit 42
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Security Blog
Microsoft Security Blog
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗

博客园 - StinJia

浙江省地理信息中心招GIS研发工程师 重回单身生活 really 切尔西英超亚军 用javascript实现较为通用的客户端分页组件(兼容firefox) 今天被ppmm拦下来了 A*寻路初探 GameDev.net(转) 用apache代理解决ajax跨域问题 pgrouting示例 postgresql 数据库远程连接问题 新同事离职了 4月5日,jia的出行 Open Source Gis(开源Gis大全) GPS Track Solution 1月29日以后需要做的事情 人渐渐而知天命,而非天命不可为也 好冷,nnd 回掉高德公司 IIS和APACHE共享端口
6 bytes判定IE浏览器
StinJia · 2010-02-28 · via 博客园 - StinJia

http://www.iefans.net/6-bytes-panding-ie/

以前在网上看过一文章讲述国外的脚本高手是如何把IE浏览器的判定从32 bytes一步步缩简成最短的7 bytes字符的故事。该代码是通过利用IE浏览器不支持垂直制表符的特性来判定当前的浏览器是否是IE,var ie = !+”\v1″;  然而这个世界纪录在今年的1月8日又被一个俄国人给打破了,判定IE浏览器又缩小了1 bytes,只需要6 bytes的字符即可显示判定IE!它利用了IE与标准浏览器在处理数组的toString方法的差异做成的。

   var ie = !-[1,];
   alert(ie);

[1,]在标准浏览器会返回字符串”1″,相当于调用[1,].toString,
,IE则返回”1,”。但是这样IE与标准都会通过检测,因此使用负号强制转换为数字,标准能成功转换为1,1会在if中自动转换为true,而IE则转换为NaN,再自动转换为false!

如果从非IE的角度判定,可以省一个比特,因为我们做兼容时,绝大多数情况都是IE与非IE的开工。

演示代码:

var notIE = -[1,];
if(-[1,]){
     alert(”这不是IE浏览器!”);
}else{
     alert(”这是IE浏览器!”);
}

经测试,发现这段只有1才能起到作用,无论是0还是2都不起作用。难倒if(-2)被Javascript认为是非法?C里面可是合法的。
测试所用浏览器分别为IE8和Opera10。