zoukankan      html  css  js  c++  java
  • javascript简单区分现代浏览器和ie6,7,8

    众多周知,对浏览器的检测主要分为3类:
    1:能力检测 调用方法之前判断浏览器支持这个方法吗。
    2:怪癖检测 根据不同浏览的特殊性为判断浏览器。
    3:用户代理检测 即通过检测用户代理字符串,这个字符串可以通过navigator.userAgent获取。
    下面介绍的2个方法都是怪癖检测的方法
    第一种:

    if(+"\v1"){
    alert("现代浏览器(包含ie9)")
    }else{
    alert("ie6,7,8")
    }


    在javascript中+后跟字符串是最简单的字符转转换成数组,所有浏览器中+”v1″返回的都是NaN,+”1″返回的是1,类型为number。
    至于以上代码为何能分辨ie6,7,9与现代浏览器就在于这个神奇的”\v”,对没错就是”\v”,不是”/a”,不是”/b”,也不是”/V”,就是”/v”。
    具体原因我也不清楚,在ie6,7,8中”\v1″解释成”v1″,所以+”\v1″返回false。
    而现代浏览器中,”\v1″都是解释成”1″,自然+”/v1″返回true。
    最开始我认为是”\”这个凡斜杠的愿意,但v换成其余字母,结果都没有如”v”一样的效果。
    ie6,7,8中”\v”==”v”,现代浏览器”\v”!=”v”也可以这样判断。至于”\v”的原理就期待高手来讲解。
    第二种是

    if(-[1,]){
    alert("现代浏览器")
    }else{
    alert("ie6,7,8")
    }


    通过的ie6,7,8对这样数组[1,]的解释与现代浏览器不一样,这是ie6,7,8的bug,不过ie9已经改善过来。[1,].length在现代浏览器返回1,在ie6,7,8中返回2。
    关于这个判断方法在最简洁短小的 JavaScript 判定 IE 浏览器有详细介绍。

  • 相关阅读:
    kubernetes 部署
    Pushgateway 介绍
    blackbox_exporter介绍
    prometheus 集群
    Alertmanager 集群
    prometheus 基于DNS的目标发现
    PHP —— 读取文件到二维数组
    PHP——自定义比较算法
    PHP遍历指定目录,并存储目录内所有文件属性信息
    mysql乱码问题解决办法
  • 原文地址:https://www.cnblogs.com/rhinemetal/p/2568561.html
Copyright © 2011-2022 走看看