(js)BrowserJudgement
来源:互联网 发布:货运gps数据 编辑:程序博客网 时间:2024/06/05 22:37
第一种:只区分浏览器,不考虑版本。
<script type="text/javascript"> function BrowserJudgement() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var CkIEJudge = !!window.ActiveXObject || "ActiveXObject" in window || (userAgent.indexOf("compatible") > 0 && userAgent.indexOf("MSIE") > 0 && !isOpera); if (CkIEJudge) { return "IE"; } //判断是否IE浏览器 else if (userAgent.indexOf("Chrome") > 0) { return "Chrome"; } //判断是否Google浏览器//Or alert("It's Chrome."); else if (userAgent.indexOf("Firefox") > 0) { return "Firefox"; } //判断是否Firefox浏览器 else if (userAgent.indexOf("Opera") >0) { return "Opera"; } //判断是否Opera浏览器 else if (userAgent.indexOf("Safari") > 0) { return "Safari"; } //判断是否Safari浏览器 else { return "UnKnown"; }; //返回未知浏览器 } //BrowserJudgement()函数调用 function Alert_BrowserJudgement() { //BrowserJudgement()函数调用 var ckbj = BrowserJudgement(); if ("IE" == ckbj) { alert("I'am IE"); } else if ("Chrome" == ckbj) { alert("I'am Chrome"); } else if ("Firefox" == ckbj) { alert("I'am Firefox"); } else if ("Opera" == ckbj) { alert("I'am Opera"); } else if ("Safari" == ckbj) { alert("I'am Safari"); } else if ("UnKnown" == ckbj) { alert("UnKnown Browser."); } else { alert("UnKnown Browser!"); } }; //Alert_BrowserJudgement();</script>
第二种,区分浏览器,考虑IE 6 7 8 10 11
<script type="text/javascript"> function BrowserTypeJudgement() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var CkIEJudge = !!window.ActiveXObject || "ActiveXObject" in window || (userAgent.indexOf("compatible") > 0 && userAgent.indexOf("MSIE") > 0 && !isOpera); if (CkIEJudge) { if (userAgent.indexOf("MSIE 6.0") > 0) { return "IE6"; } else if (userAgent.indexOf("MSIE 7.0") > 0) { return "IE7"; } else if ((userAgent.indexOf("MSIE 8.0") > 0) || (userAgent.indexOf("MSIE 9.0") > 0 && !window.innerWidth)) {//IE8及之前不支持window.innerWidth return "IE8"; } else if (userAgent.indexOf("MSIE 9.0") > 0) { return "IE9"; } else if (userAgent.indexOf("MSIE 10.0") > 0) { return "IE10"; } else if (userAgent.search(/Trident/i) > 0) { return "IE11"; } else { return "UnKnown"; } } //判断是否IE浏览器 else if (userAgent.indexOf("Chrome") > 0) { return "Chrome"; } //判断是否Google浏览器//Or alert("It's Chrome."); else if (userAgent.indexOf("Firefox") > 0) { return "Firefox"; } //判断是否Firefox浏览器 else if (userAgent.indexOf("Opera") > 0) { return "Opera"; } //判断是否Opera浏览器 else if (userAgent.indexOf("Safari") > 0) { return "Safari"; } //判断是否Safari浏览器 else { return "UnKnown"; //返回未知浏览器 } } function Alert_BrowserTypeJudgement(){ //BrowserJudgement()函数调用 var ckbtj = BrowserTypeJudgement(); if ("IE6" == ckbtj) { alert("I'am IE6"); } else if ("IE7"==ckbtj) { alert("I'am IE7"); } else if ("IE8" == ckbtj) { alert("I'am IE8"); } else if ("IE9" == ckbtj) { alert("I'am IE9"); } else if ("IE10" == ckbtj) { alert("I'am IE10"); } else if ("IE11" == ckbtj) { alert("I'am IE11"); } else if ("Chrome" == ckbtj) { alert("I'am Chrome"); } else if ("Firefox" == ckbtj) { alert("I'am Firefox"); } else if ("Opera" == ckbtj) { alert("I'am Opera"); } else if ("Safari" == ckbtj) { alert("I'am Safari"); } else if ("UnKnown" == ckbtj) { alert("UnKnown IEType!"); } else { alert("UnKnown Browser!"); } }; //Alert_BrowserTypeJudgement(); </script>
//if(X),执行if判断是转换为bool,而if(!!X)中,转换为bool类型后执行if判断
//!!是强制类型转换,!!X将X强制转换为Bool
//对window.ActiveXObject的调用会返回一个对象,也可能返回null,if语句会把返回的结果看作是true或false,如果返回对象则为true,返回null则为false,以此指示浏览器是否支持ActiveX控件,相应的得知浏览器是不是Internet Explorer.
引用评论:
1、这个我猜跟JS引擎实现相关,因为x存在null、undefined、NaN等等特殊情况,!x可以理解为一个强制类型转换(Boolean)x的意思。另一个猜想,因为考虑到JS有多种实现,为了安全兼容,因此使用上述表达方式。以上只是猜想,有时间的话,肯怕要读读JS的引擎代码才行。
2、在互联网的浏览器中 if(a) 都是可以往下执行的 (我说的是我见到 都是可以往下执行的)之前 我在一家机顶盒公司的时候 在机顶盒里面的 环境 中 if(a) 是通不过的 也就是说是按 false来的 if(!!a) 应该是更安全 更符合标准
1 0
- (js)BrowserJudgement
- js
- js
- JS
- JS
- JS
- js
- js
- js
- js
- js
- JS
- js
- JS
- js
- js
- js
- js
- AIDL简单的使用
- 云工厂的演变与中国制造业前景展望
- SQL中的case when then else end用法
- 五,iOS应用架构谈 组件化方案
- 【小知识学习】(Secure socket layer)SSL连接
- (js)BrowserJudgement
- js仿google+分享新鲜事系统实例源码
- 《Motion Design for iOS》(三十二)
- PHP判断二级域名,301跳转
- Java异常收集 - 反射相关
- 如何完美定制 Ubuntu 控制台及 vim
- 有一段时间没来了,总结一下
- bean的加载(四)从bean的实例中获取对象
- java 如何完美编写对象的equal方法