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

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

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