用js判断用户浏览器是否是XP SP2的IE6


Posted in Javascript onMarch 08, 2007

由于Windows XP的补丁SP2,对IE6的安全性也做了很多的提升,使得有不少原来我们可以使用的功能,会变得很奇怪甚至歇菜掉:(。特别是弹出窗口、模态窗口和Popup窗口等受的影响相当大。那么我能不能判断用户使用的IE6是普通IE6(IE6sp1)还是IE6+xp sp2呢? 

    下面是两个比较典型的IE6浏览器UserAgent字段: 

    1、Windows XP + SP1 (NT 5.1) 
Connection: Keep-Alive 
Accept: */* 
Accept-Encoding: gzip, deflate 
Accept-Language: zh-cn 
Host: zhilee.aehk.com 
Referer: http://www.cnblogs.com/birdshome/archive/2005/03/11/113723.html 
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) 
    2、Windows 2003 + SP1 (NT 5.2) 
Connection: Keep-Alive 
Accept: */* 
Accept-Encoding: gzip, deflate 
Accept-Language: zh-cn 
Host: zhilee.aehk.com 
Referer: http://www.cnblogs.com/bluefee/archive/2005/03/28/127455.html 
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322) 
UA-CPU: x86 
    这两个UA string和普通的UA string最大区别就是,里面多了一个"SV1"标志,这个是什么意思呢?SV1的本意是"Security Version 1",它就是用来专门标注使用IE6浏览器的用户使用的操作系统是否是XPSP2或WS03SP1。 

    既然XPSP2和WS03SP1对IE6有影响,为什么不提升IE的版本号,而是单独使用SVX标注呢?IE开发团队是这么解释的,他们说虽然这两个操作系统的补丁对IE6的设置有影响,但是并没有修改IE6本身的任何功能,比如呈现、DHTML和DOM等。所以这样的一些安全设置不适合升级IE本身的版本号。 

    在后续的IE版本中,SVX标志可能会被移除,所以目前我们使用UA string检测操作系统的SP版本,只是一个临时的办法。 

var ua = navigator.userAgent; 
if ( ua.indexOf("SV1") != -1 ) 

    if ( ua.indexOf("NT 5.1") != -1 ) 
    { 
        // windows xp + sp2 
    } 
    else if ( ua.indexOf("NT 5.2") != -1 ) 
    { 
        // windows 2003 + sp1 
    } 
    else 
    { 
        // wrong user agent string 
    } 

Javascript 相关文章推荐
jquery 利用show和hidden实现级联菜单示例代码
Aug 09 Javascript
js使用removeChild方法动态删除div元素
Aug 01 Javascript
jQuery内容过滤选择器用法分析
Feb 10 Javascript
原生js实现图片轮播特效
Dec 18 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
Jan 19 Javascript
jquery实现文本框textarea自适应高度
Mar 09 Javascript
全面解析Bootstrap中form、navbar的使用方法
May 30 Javascript
js完整倒计时代码分享
Sep 18 Javascript
jQuery  ready方法实现原理详解
Oct 19 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 jQuery
微信web端后退强制刷新功能的实现代码
Mar 04 Javascript
基于原生JS封装的Modal对话框插件的示例代码
Sep 09 Javascript
在IE模态窗口中自由查看HTML源码的方法
Mar 08 #Javascript
encode脚本和normal脚本混用的问题与解决方法
Mar 08 #Javascript
IE7提供XMLHttpRequest对象为兼容
Mar 08 #Javascript
使用onbeforeunload属性后的副作用
Mar 08 #Javascript
HTML中不支持静态Expando的元素的问题
Mar 08 #Javascript
使用TextRange获取输入框中光标的位置的代码
Mar 08 #Javascript
获取JavaScript用户自定义类的类名称的代码
Mar 08 #Javascript
You might like
在PHP中使用模板的方法
2008/05/24 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
php实现的操作excel类详解
2016/01/15 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
php判断是否连接上网络的方法实例详解
2016/12/14 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
javascript中常用编程知识
2013/04/08 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
Python 私有函数的实例详解
2017/09/11 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
浅谈python写入大量文件的问题
2018/11/09 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
Keras设置以及获取权重的实现
2020/06/19 Python
Hammitt官网:设计师手袋
2020/05/23 全球购物
用C语言实现文件读写操作
2013/10/27 面试题
override和overload的区别
2016/03/09 面试题
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
物流管理毕业生自荐信
2013/10/24 职场文书
心理学专业毕业生推荐信范文
2013/11/21 职场文书
安全责任书模板
2014/07/22 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
大学学习委员竞选稿
2015/11/20 职场文书