(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) 应该是更安全 更符合标准

各浏览器2015用户占比

1 0
原创粉丝点击