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

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
宝玉的分享
宝玉的分享
G
Google Developers Blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
V
Visual Studio Blog
博客园 - Franky
S
SegmentFault 最新的问题
Jina AI
Jina AI
爱范儿
爱范儿
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
D
DataBreaches.Net
C
Check Point Blog
月光博客
月光博客
P
Proofpoint News Feed
T
The Blog of Author Tim Ferriss
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MongoDB | Blog
MongoDB | Blog
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
Martin Fowler
Martin Fowler

博客园 - 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。