浏览器版本检测接口封装

最近在做公司PC端低版本浏览器兼容性问题,现将检测浏览器版本号接口封装一下,和大家一起分享交流下。

 browserCheck.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浏览器版本检测接口封装</title>
    <script src="browserCheck.js"></script>
    <script>
        window.onload = function () {
            top.CY.BrowserCheck.getBrowserInfo({
                IE: 10,
                Firefox: 10,
                Chrome: 21,
                SafariWindow: 500,
                Safari1Mac: 500,
            }, function (results) {
                if (results) {
                    alert(‘您的浏览器版本太低!‘);
                } else {
                    alert(‘您的浏览器版本正常!‘);
                }
            });
        }
    </script>
</head>
<body>

</body>
</html>

      browserCheck.js

if (!window.CY) window.CY = {};
var CY = window.CY;

CY.BrowserCheck = {
    getBrowserInfo: function (obj, callback) {
        var agent = navigator.userAgent.toLowerCase();
        //判断是否是Windows操作系统
        var isWin = (navigator.platform == "Win32") || (navigator.platform == "Win64") || (navigator.platform == "Windows");
        //判断是否是Mac操作系统
        var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
        //获取当前浏览器版本号
        var version_ie = (agent.match(/msie [\d.]+;/gi) + "").replace(/[^0-9.]/ig, "").split(".")[0];
        var version_ff = (agent.match(/firefox\/[\d.]+/gi) + "").replace(/[^0-9.]/ig, "").split(".")[0];
        var version_chrome = (agent.match(/chrome\/[\d.]+/gi) + "").replace(/[^0-9.]/ig, "").split(".")[0];
        var version_saf = (agent.match(/safari\/[\d.]+/gi) + "").replace(/[^0-9.]/ig, "").split(".")[0];
        var flag = false;
        if (isWin) {
            //IE
            if (agent.indexOf("msie") > 0 && version_ie < obj.IE) {
                flag = true;
            }
            //firefox
            if (agent.indexOf("firefox") > 0 && version_ff < obj.Firefox) {
                flag = true;
            }
            //Chrome
            if (agent.indexOf("chrome") > 0 && version_chrome < obj.Chrome) {
                flag = true;
            }
            //Safari
            if (agent.indexOf("safari") > 0 && agent.indexOf("chrome") < 0 && version_saf < obj.SafariWindow) {
                flag = true;
            }
        }
        if (isMac) {
            //Safari
            if (agent.indexOf("safari") > 0 && version_saf < obj.Safari1Mac) {
                flag = true;
            }
        }
        flag == true ? callback(true) : callback(false)
    }
}
代码DEMO:  链接: http://pan.baidu.com/s/1eRSarlw 密码: 87r8
时间: 2025-01-14 05:16:12

浏览器版本检测接口封装的相关文章

微信内置浏览器私有接口WeixinJSBridge介绍

原文地址:http://www.3lian.com/edu/2015/05-25/216227.html 这篇文章主要介绍了微信内置浏览器私有接口WeixinJSBridge介绍,本文讲解了发送给好友.分享函数.隐藏工具栏.隐藏三个点按钮等功能,需要的朋友可以参考下 微信网页进入,右上角有三个小点,没错,我们用到的就是它!我们只要通过将小点列表下的按钮进行自定义,就可以随心所欲的分享我们自己的内容了. 注意:(WeixinJSBridge只能在微信内打开的网页有效) 按钮一之------发送给好

Retrofit – Java(Android) 的REST 接口封装类库

Retrofit 和Java领域的ORM概念类似, ORM把结构化数据转换为Java对象,而Retrofit 把REST API返回的数据转化为Java对象方便操作.同时还封装了网络代码的调用. 例如: public interface GitHubService { @GET("/users/{user}/repos") List<Repo> listRepos(@Path("user") String user); } 定义上面的一个REST API

微信内置浏览器私有接口WinXinJsBridge介绍

关于微信内置浏览器私有接口WeiXinJsBridge,只是之前接触过的一个微信公众号项目中遇到过,不过并没有深入研究过,可以说并没有了解过... 刚好今天无意中看到了这方面的知识,就补习一下,弥补一下自己短缺的js知识,虽然只是了解了一点,但是还是先记录下来,一方面增强自己的记忆,另一方面,顺便练练手,不至于将来使用的时候,找到了地方.下面进入正题. 看了这个微信浏览器私有接口WeiXinJsBridge,大致总结了一下几个小的有用的知识点: 1.分享给好友. 2.分享到朋友圈. 3.分享到微

基于Verilog的带FIFO输出缓冲的串口接收接口封装

一.模块框图及基本思路 rx_module:串口接收的核心模块,详细介绍请见"基于Verilog的串口接收实验" rx2fifo_module:rx_module与rx_fifo之间的控制模块,其功能是不断接收并将数据写入rx_fifo rx_interface:串口接收接口封装,也就是前两个模块的组合 rx_interface_control:串口接收接口控制模块,每隔1s读取一次串口rx_fifo,并将数据的低四位用Led显示出来 rx_interface_top:串口接收接口顶层

浏览器性能接口performance.timing说明

原文来自于 https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html 下图描述了该接口的各个时间点: performance.timing API 各个时间点含义如下: navigationStart 当访问一个新页面时,当前页面卸载完成所返回的时间点,如果没有当前页面,则返回fetchStart时间点. unloadEventEnd 如果要打开的页面和当前的页面同源,则返回用户unload事

jeewx-api 1.0.5 版本发布,微信SDK接口封装

JeeWx-api 1.0.5 版本发布,微信SDK接口封装 1.jeewx-api为何诞生 现在微信越来越火,基于微信的公众号和服务号越来越丰富,虽然微信帮助文档已经提供了相关的接口,但是接口比较多,通过代码自己调用比较麻烦,所以为减轻开发者独自创造轮子,将微信API进行了统一封装! 2.作者 : Jeecg开源社区 3.新版本升级功能    一.基础接口         1.获取api_ticket          2.自定义菜单删除接口          3.多媒体素材永久上传接口   

微信小程序“一劳永逸”的接口封装

前言 最近都在研究小程序了,我可以的! 需求 之前都是用vue来开发项目的,接口模块我特意封装了一下.感觉也可以记录一下 小程序的接口虽说简单,但是重复调用那么多,显得不专业(一本正经的胡说八道) 还有一篇,小程序遇到了的那些坑和小技巧)待续 一.小程序接口请求流程 简单的画了一个流程图 二.域名配置 一定要配置https,小程序上配置的域名必须是域名备案的,还有一定服务器要TLS1.2以上 三.打开微信开发者工具,打开你的项目,点开详情.确认一下域名是否一一匹对.不然会编译失败的哦 四.在你的

将数据库从服务器移到浏览器--indexedDB基本操作封装

数据库是属于服务器的,这是天经地义的事,但是有时候数据也许并非需要存储在服务器,但是这些数据也是一条一条的记录,怎么办?今天来带领你领略一下H5的一个新特性--indexedDB的风骚.你会情不自禁的发出感叹--不可思议! 一.链接数据库 indexedDB没有创建数据库的概念,你可以直接链接数据库,如果你链接的数据库并不存在,那么会自动的创建一个数据库.看下面的这个例子. <!DOCTYPE html> <html lang="en"> <head>

C++ Redis mset 二进制数据接口封装方案

需求 C++中使用hiredis客户端接口访问redis: 需要使用mset一次设置多个二进制数据 以下给出三种封装实现方案: 简单拼接方案 在redis-cli中,mset的语法是这样的: /opt/colin$./redis-cli mset a 11 b 22 c 333 OK 按照这样的语法拼接后,直接使用hiredis字符串接口redisCommand传递: void msetNotBinary(redisContext *c, const vector<string> &v