6 bytes判定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。

下面收集一些判定IE浏览器各个版本的方法,主要使用IE各个阶段实现的一些方法,我们从这些IE判断中也可以用另一种视角来看IE的发展史。暂时提供到IE4的判定。

var isIE = window.ActiveXObject;
var isVersion = document.querySelectorAll ? 8.0 :

window.XMLHttpRequest ? 7.0 :

document.compatMode ? 6.0 :

(0).toFixed ? 5.5 :

document.getElementById? 5.0 :

document.all ? 4.0 :0;
IE5支持getElementById真是一个伟大的创举。新事物的出现总是引起话题,想起我的javascript启蒙书《Javascript DOM编程艺术》,里面的代码总是少不了判定是否支持getElementById……从此IE5走向辉煌,把网景推向地狱的深渊。IE5发布于1998年9月,从此所有主流浏览器都支持getElementById。

网上找到让IE4支持getElementById的代码,javascript的动态解析立功了。

var ie4=document.all && !document.getElementById;
if(ie4) {

document.getElementById = new Function(’var expr = /^\\w[\\w\\d]*$/, elname=arguments[0]; if(!expr.test(elname)) { return null; } else if(eval(”document.all.”+elname)) { return eval(”document.all.”+elname); } else return null;’)
}
还有getElementsByTagName的实现:

function ie_getElementsByTagName(str) {
if (str==”*”)
return document.all
else
return document.all.tags(str)
}

if (document.all)
document.getElementsByTagName = ie_getElementsByTagName

很明显如果这些方法得到内置的原生支持,工作效率会大大提升,像jQuery的选择器之于querySelectorAll。IE5可能是当年内置方法与私有实现最多的浏览器,因此它赢得很彻底(抛开捆绑的原因)。内置方法越多,那么对于创建类库的工作就越轻松,从那时开始javascript的类库也多起来了。时至今日,javascript挟以jQuery的东风,越来越受到人重视。加之,西方人对后端javascript的研究,W3C许多惊人的草案的实现,微软加快对标准的支持,谷歌V8的javascript引擎与OS的咄咄逼人,我们一同期待IE9盛世的到来吧。
【乐企文件生成工程】关于乐企文件生成工程的详细介绍 发票文件生成方式有两种思路:1、根据已有的OFD模板,动态替换ofd模板内容;之后将ofd转pdf(局限:单行问题不大)详情可以在此处了解2、根据html模板动态占位:该工程就是这种方式 ,目前效果良好,可看下图。拿去即用的源码!无任何保留,当然也并不是所有票种都支持(时间有限、精力有限、已经连着转了,要冒烟了…) 阅读详情

相关推荐

C#串口通讯实战:如何用SerialPort类搞定工业传感器数据采集(附完整代码)

本文详细介绍了如何使用C#的SerialPort类实现工业级传感器数据采集,涵盖串口通讯基础配置、数据帧处理、异常恢复机制及性能优化策略。通过实战代码示例,帮助开发者构建稳定可靠的工业数据采集系统,特别适合需要处理高频数据采集和复杂工业环境的场景。

weixin_42525551的博客 1084

字节大小关系

8bit(位)=1Byte(字节) 1024Byte(字节)=1KB 1024KB=1MB 1024MB=1GB 1024GB=1TB

又菜又爱玩的博客 698

【Unity3D渲染】Unity3d实现Photoshop的各种图层混合模式

Adobe Photoshop图层混合原理、Unity ShaderLab图层混合实现

a310989583的专栏 2434

聊聊编码与解码(弄懂bytes,utf-8,ascii,unicode)

引言 每次坐下来写一篇博客总结的时候都会先长长的舒一口气,从被一个问题困扰开始,到最后搞清楚弄明白原理,其间经历的过程就像从窒息的环境中慢慢恢复呼吸。作为一个计算机专业的学生,大学四年的时间竟然从没仔细思考过编码与解码的细节是惭愧的,只记得当年老师讲过的一条真理:”遇到编码的问题统一选utf8就好了”。知其然不知其所以然,我曾无数次鄙视过我的灵魂,此时此刻就是无数次中的一次。字符编码的由...

以梦为码 随路可栖 8530

【半桥LLC】半桥LLC谐振开环闭环软启动DCDC变换器的设计与仿真

本文详细分析了半桥LLC谐振DC-DC变换器的开环与闭环控制设计原理,重点探讨了软启动功能的实现。通过仿真验证,展示了开环与闭环情况下的电压输出差异以及系统效率的提升。该研究为提高DC-DC变换器性能提供了参考。

2401_84610415的博客 2594

特征拼接(Feature Concatenation)技术全景解析

特征拼接是深度学习中的核心特征融合技术,通过在指定维度连接不同来源的特征张量,创造性地解决了多源、多尺度特征融合的关键挑战。这种简单却强大的操作已成为现代神经网络架构设计的基石。

浩瀚之水的专栏 1639

Bytes和bits的区别(字节和位的区别)

基本概念 Bit意为“位”或“比特”,是计算机运算的基础,属于二进制的范畴; Byte意为“字节”,是计算机文件大小的基本计算单位; 这两者应用的场合不同。通常用bit来作数据传输的单位,因为物理层,数据链路层的传输对于用户是透明的,而这种通信传输是基于二进制的传输。在应用层通常是用byte来作单位,表示文件的大小,在用户看来就是可见的数据大小。比如一个字符就是1byte,如果是汉...

weixin_30437337的博客 2711

1位2路选择器设计

1位2路选择器设计

好好学习,天天向上 3576

bytes数据类型

Python3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区别。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。这是件好事。   字符串是以字符为单位进...

RoundOff的博客 6432

MTK(camera篇)Camera整体点亮

本文介绍了在MTK平台上添加新Camera Sensor的驱动开发流程。主要内容包括:1)MTK Camera采用HAL3架构,驱动层主要负责sensor电源控制和寄存器操作;2)详细说明了添加新sensor需要在多个文件中进行的修改,包括设备树配置、内核头文件、驱动列表、电源序列等;3)特别指出需要配置I2C地址表,并导入tuning文件和metadata文件以完善ISP处理流程。文章提供了完整的文件修改清单,涵盖了从内核层到HAL层的完整开发过程,为MTK平台Camera Sensor驱动开发提供了具体

weixin_49303682的博客 360

黑猫带你学Nand第8篇:NandFlash的供电情况详解

是指在任何工作条件下,设备允许的最大电压、电流、功率以及温度等参数的界限值。

黑猫奥利奥的博客 1147

6 bytes !! IE判定

今日无事,在院子中乱逛,偶遇此牛B的IE判定,特专记于此。(转自 >) var ie = !-[1,];if(ie) alert(这是IE浏览器!);else alert(这不是IE浏览器!);<!--function doCode(){var ie = !-[1,];if(ie) alert(这是IE浏览器!);else

摸门槛的专栏 327

手把手教你学simulink(16.8)--基于Simulink的小波变换滤波器(Wavelet Transform Filter)项目

基于Simulink的小波变换滤波器(Wavelet Transform Filter)项目的详细实例介绍。这个项目将重点放在小波变换滤波器的设计、实现和仿真上,帮助你理解和应用小波变换滤波器在信号处理中的作用。

MHD0815的博客 534

全世界最短的IE判定

<br />以前最短的IE判定借助于IE不支持垂直制表符的特性搞出来的。varie = !+"/v1";<br />仅仅需要7bytes!参见这篇文章,《32 bytes, ehr ... 9, ehr ... 7!!! to know if your browser is IE》 ,讲述外国人 是如何把IE的判定从32 bytes一步步缩简成7 bytes!的故事<br />但这纪录今年1月8日被一个俄国人打破了,现在只要6 bytes!它利用了IE与标准浏览器在处理数组的toString

委座·昂 425

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

全世界最短的IE判定(经典转载)

     以前最短的IE判定借助于IE不支持垂直制表符的特性搞出来的。     var ie = !+"/v1";     仅仅需要7bytes!参见这篇文章,《32 bytes, ehr ... 9, ehr ... 7!!! to know if your browser is IE》,讲述外国人是如何把IE的判定从32 bytes一步步

derpvailzhangfan的专栏 1038

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

6 bytes判定IE浏览器

http://www.iefans.net/6-bytes-panding-ie/ 以前在网上看过一文章讲述国外的脚本高手是如何把IE浏览器的判定从32 bytes一步步缩简成最短的7 bytes字符的故事。该代码是通过利用IE浏览器不支持垂直制表符的特性来判定当前的浏览器是否是IE,var ie = !+”\v1″; 然而这个世界纪录在今年的1月8日又被一个俄国人给打破了,判定IE浏览...

weixin_30455661的博客 149

[转载]全世界最短的IE判定

[原文地址]http://www.cnblogs.com/rubylouvre/archive/2010/01/28/1658006.html 以前最短的IE判定借助于IE不支持垂直制表符的特性搞出来的。 var ie = !+"\v1"; 仅仅需要7bytes!参见这篇文章,《32 bytes, ehr ... 9, ehr ......

weixin_30311605的博客 68

最短的IE判定var ie=!-[1,]分析

最短的IE判定var ie=!-[1,]分析 2011-05-02 以前最短的IE判定借助于IE不支持垂直制表符的特性搞出来的。 1 varie = !+"\v1"; 仅仅需要7bytes!参见这篇文章,《32 bytes, ehr ... 9, ehr ... 7!!! to know if your browser is...

WEBCODE 246

世界上最短的JS判断是否为IE浏览器

if(-[1,]){ alert("这不是IE浏览器!"); }else{ alert("这是IE浏览器!"); } var ie = !+"\v1"; 仅仅需要7bytes!参见这篇文章,《32 bytes, ehr ... 9, ehr ... 7!!! to know if your browser is...

35

js 全世界最短的IE浏览器判断代码

今天发现个很有趣的js判断全世界最短的代码,想想之前自己写的判断ie浏览器的,这个实在简单多了   var ie = !+"\v1"; 仅仅需要7bytes!参见这篇文章,《32 bytes, ehr ... 9, ehr ... 7!!! to know if your browser is IE》,讲述外国人是如何把IE的判定从32 bytes一步步缩简成7 bytes!的故事 但这纪录今

W5991214974444的专栏 642

鸿蒙元服务开发全流程实战:Dev Assistant提效技巧与避坑指南

在移动应用开发领域,免安装、即点即用的轻量服务正成为新趋势。HarmonyOS元服务作为鸿蒙生态的核心形态,以其原子化能力和多入口特性,为开发者提供了全新的业务落地路径。然而,元服务在工程结构、生命周期管控、卡片刷新机制、上架审核等方面与传统App截然不同,开发门槛不容小觑。Dev Assistant作为鸿蒙生态的智能开发助手,深度集成于DevEco Studio,能够在工程初始化、ArkUI页面构建、状态管理、跨设备流转及调试排错等环节显著提升效率。但工具并非万能,其生成的代码仍需开发者理解后谨慎采纳,尤

weixin_33853794的博客 288

[Javascript]史上最短的IE浏览器判断代码

今天发现个很有趣的js判断全世界最短的代码,想想之前自己写的判断ie浏览器的,这个实在简单多了 var ie = !+"\v1"; 仅仅需要7bytes!参见这篇文章,《32 bytes, ehr ... 9, ehr ... 7!!! to know if your browser is IE》,讲述外国人是如何把IE的判定从32 bytes一步步缩简成7 bytes!的故事 但这纪录今...

weixin_34291004的博客 75

JS判断是否是IE浏览器仅仅需要7bytes!

前最短的IE判定借助于IE不支持垂直制表符的特性搞出来的。   var ie = !+"\v1";   仅仅需要7bytes!参见这篇文章,《32 bytes, ehr ... 9, ehr ... 7!!! to know if your browser is IE》,讲述外 国人是如何把IE的判定从32 bytes一步步缩简成7 bytes!的故事   但这纪录今年1月

nox 332
上一篇: html 锁定页面(js遮罩层弹出div效果)
下一篇: oracle 9i 的sys 密码忘记了.
java_doom
博客等级 码龄20年 6粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值