• 判断浏览器型号(浏览器嗅探)


    在看aralejs的sticky组件时,刚好看到判断浏览器型号的方法:window.navigator.userAgent

    // 只需判断是否是 IE 和 IE6
    ua = (window.navigator.userAgent || "").toLowerCase(),
    isIE = ua.indexOf("msie") !== -1,
    isIE6 = ua.indexOf("msie 6") !== -1;
    兴致来了就在各自的浏览器控制台输入,得到以下一些结果:
    • chrome:  "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/29.0.1547.66 safari/537.36"
    • FireFox:  "mozilla/5.0 (windows nt 6.1; wow64; rv:23.0) gecko/20100101 firefox/23.0"
    • Opera:   "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/29.0.1547.57 safari/537.36 opr/16.0.1196.73"

    • IE8: "mozilla/4.0 (compatible; msie 8.0; windows nt.0; windows nt 6.1; wow64; trident/4.0; slcc2; .net clr 2.0.50727; .net clr 3.5.30729; .net clr 3.0.30729; media center pc 6.0; .net4.0c; .net4.0e)"

    • IE7:"mozilla/4.0 (compatible; msie 7.0; windows nt 6.1; wow64; slcc2; .net clr 2.0.50727; .net clr 3.5.30729; .net clr 3.0.30729; media center pc 6.0; .net4.0c; .net4.0e)"

    因此可以利用这一特性,来简单判断浏览器型号和版本:

    function browser (){
    
    		var ua=window.navigator.userAgent,
    			ret="";
    
    		if(/Firefox/g.test(ua)){
    
    		ua=ua.split(" ");
    		ret="Firefox|"+ua[ua.length-1].split("/")[1];
    
    		}else if(/MSIE/g.test(ua)){
    
    		ua=ua.split(";");
    		ret="IE|"+ua[1].split(" ")[2];
    
    		}else if(/Opera/g.test(ua)){
    
    		ua=ua.split(" ");
    		ret="Opera|"+ua[ua.length-1].split("/")[1];
    
    		}else if(/Chrome/g.test(ua)){
    
    		ua=ua.split(" ");
    		ret="Chrome|"+ua[ua.length-2].split("/")[1];
    
    		}else if(/^apples+/i.test(navigator.vendor)){
    
    		ua=ua.split(" ");
    		ret="Safair|"+ua[ua.length-2].split("/")[1];
    
    		}else{
    			ret="未知浏览器";
    			}
    
    	 return ret.split("|");
    }
    
    //调用函数,返回一个数组,r[0]是浏览器名称,r[1]是版本号
    var r=browser();
    console.log(r);
    

      可以很好利用正则、数组的spilt来实现,代码引用自 http://www.muzilei.com/archives/142

    但应该注意的是,MOZILLA开发者网络给出了这么一段描述:

    附注

    通过检测userAgent的值来判断浏览器类型是不可靠的,也是不推荐的.因为用户可以修改userAgent的值.比如:

    • Firefox中,你可以通过在about:config页面添加并修改general.useragent.override选项的值来覆盖默认的用户代理字符串.一些Firefox扩展也可以用其他方式修改这个值,但它们通常只会修改发送到服务器的User-Agent请求头的值,而不会影响JavaScript代码中获取到的window.navigator.userAgent属性的值.
    • Opera 6+ 中允许用户通过菜单选择不同的用户代理字符串.
    • Microsoft Internet Explorer使用注册表来配置自己的用户代理字符串.
    • Safari和iCab也允许用户修改其用户代理字符串,来将自己伪装成Internet Explorer或Netscape.

    我相信,会有一个公正而深刻的认识来为我们总结的:那时,我们这一代独有的奋斗、思索、烙印和选择才会显露其意义。 ——《北方的河》

    博文来源:http://www.cnblogs.com/liaopr

    如果您觉得本文的内容对您的学习有所帮助,可以选择打赏我一杯咖啡:D

  • 相关阅读:
    Redis 分区
    利用phpexcel把excel导入数据库和数据库导出excel实现
    Phpcms V9网站从本地上传到服务器需要修改的地方
    PHPcms怎么调用二级栏目
    phpcms调用一级栏目和二级栏目
    [v9] 列表页 调用 正文内容 或 自定义 字段(moreinfo的调用方法)
    phpcms v9最常用的22个调用代码
    phpcms_v9 多图字段 内容页,首页,分页自定义字段调用
    JS常用语句
    phpcms v9中调用栏目及调用多个子栏目中的文章列表
  • 原文地址:https://www.cnblogs.com/liaopr/p/3314179.html
Copyright © 2020-2023  润新知