js监测ie678 浏览器
来源:互联网 发布:淘宝赌石 编辑:程序博客网 时间:2024/05/23 12:05
常用的 JavaScript 检测浏览器为 IE 是哪个版本的代码,包括是否是最人极端厌恶的 ie6 识别与检测。
var isIE=!!window.ActiveXObject;var isIE6=isIE&&!window.XMLHttpRequest;var isIE8=isIE&&!!document.documentMode;var isIE7=isIE&&!isIE6&&!isIE8;if (isIE){if (isIE6){alert("ie6");}else if (isIE8){alert("ie8");}else if (isIE7){alert("ie7");}}
然后是一个稍微短的 js 判断是否 ie 的方法:
这个貌似是利用 IE 中 JScript所特有的条件编译(或曰条件注释)来区分 IE 和非 IE(这里的IE/非IE均是针对内核而言,以IE为内核的浏览器将视为IE)
var ie = !-[1,];
这句代码在IE9之前曾被称为世界上最短的IE判定代码。代码虽短但确包含了不少javascript基础知识在里面。在这个例子中代码执行时会先调用数组的toString()方法 ,执行[1,].toString()在IE6,7,8中将会得到”1,”。然后表达式就变为!-”1,”。再尝试把”1,”转换成数值类型得到NaN ,再对NaN取负得到值仍为NaN。最后执行!NaN返回true。下面通过分解这个语句来回顾下代码中所涉及到的javascript知识:
1. 浏览器的数组字面量解析差异
[1,]表示使用的数组字面量定义了一个数组。 在IE6,7,8中数组有两个元素,数组中的值分别为1,undefined。在标准的浏览器中会忽略第一个元素后的undefined,数组只包含一个元素1。
2. 数组的toString()方法
调用数组对象的toString()方法时会对数组中的每个元素调用toString()方法,如果元素的值为NULL或者undefined时会返回空的字符串,然后将得到的每项的值拼成一个使用 逗号”,”分隔的字符串。
3. 一元减号运算符
使用一元减号运算符时如果运算数是数值类型则直接对运算数取负,否则会先尝试把运算数转换为数值类型,转换过程相当于执行Number函数,然后再对得到的结果取负。
4. 逻辑非运算
执行逻辑非运算时如果操作数为NaN、NULL或undefined 时返回 true。
JavaScript可以这么写:
var ie = !-[1,]; alert(ie);
如果从非IE的角度判定,可以省一个比特,因为我们做兼容时,绝大多数情况都是IE与非IE地开工。
var notIE = -[1,];if(-[1,]){ alert("这不是IE浏览器!"); }else{ alert("这是IE浏览器!"); }
通过上面的知识可以得出代码 var ie = !-[1,]; 其实等价于 var ie = !(-Number([1,].toString())); 在IE678中值为true。
因为IE6/7/8都不会忽略[1,].ToString()这个bug,即得到的是”1,”;而-Number([1,].toString())即为-Number(“1,”)得到的结果是NaN;然后!(-Number([1,].toString()))即为!(NaN)即得到true。一切的前提是IE6/7/8都有[1,].ToString()=>”1,”这个bug,而其它浏览器(应该是大部分吧~~)则是[1,].ToString()=>”1″。
- js监测ie678 浏览器
- js - 监测ie浏览器版本
- js监测关闭当前页面、关闭浏览器和取消监测
- js判断是否为IE678简易办法
- 浏览器信息监测
- JS远程监测-后台设计
- JS远程监测-Flume设置
- <转>监测用户浏览器是否有缩放
- 利用!!window.ActiveXObject监测IE浏览器
- ie678兼容css3
- 支持IE678的canvas
- JS远程监测代码V0.1-监测页面测试
- js实现 股票实时数据 监测
- JS远程监测代码V0.1
- JS远程监测-Linux平台设置
- Bootstrap关于IE678兼容方法
- bs系统中监测ie浏览器关闭的方法
- Flex 监测浏览器和主应用程序关闭的相关处理
- NYOJ 364 田忌赛马(贪心)
- 如何自定义kindeditor编辑器的工具栏items即去除不必要的工具栏或者保留部分工具栏
- Web应用及XHTML基础篇
- mina简单编解码器示例
- linux学习(八) XShell上传、下载本地文件到linux服务器
- js监测ie678 浏览器
- 【ADO.NET】 概述以及connection与command
- USACO——Healthy Holsteins
- HDU1728 逃离迷宫
- 2006 求奇数的乘积
- 第一个设置a的bit3,第二个清除a的bit3
- 多态的预习
- 链接网址收藏
- Android的数据存储方式