您现在的位置是:首页 > 文章详情文章详情

JS检测本机是否可以访问公网服务器

会飞的猪 2020-03-27 268人已围观

简介白码驿站是一个面向开发者的知识共享社区,专注于为开发者打造一个纯净的技术交流社区(源码下载,免费在线图片压缩,jquery插件,插件下载,JS/CSS在线压缩。)-白码驿站

        最近在改造HR系统, HR有个文件分享模块, 该模块可以预览xls,xlsx,doc等文件,用插件的话在某些特殊情况下显示的并不是那么友好,所以考虑使用微软提供的接口,由于HR系统可能部署在内网上, 所以需要做个处理,判断是否可以访问外网, 如果是外网就使用微软提供的接口显示,否则就使用插件显示。

功能代码:

                                        
    (function () {
        //检测入口
        checkNet = function () {
            var def = $.Deferred();
            xiuNet(null).then(function (res) {
                netWork(null).then(function (res) {
                    if (res) {
                        def.resolve(true);
                    } else {
                        def.resolve(false);
                    }
                })
            })
            return def.promise();
        }
        //嗅探网络,解决ios弹框接入网络问题
        var checkTime = 2; //嗅探次数
        xiuNet = function (def) {
            if (def == null) { def = $.Deferred(); }
            var iframe = document.createElement("iframe");
            iframe.style.cssText = "display:none;width:0px;height:0px;";
            document.body.appendChild(iframe);
            var ua = navigator.userAgent;
            if (ua.indexOf("iPhone") != -1 || ua.indexOf("iPod") != -1 || ua.indexOf("iPad") != -1) {
                iframe.src = "http://www.baidu.com" + "?timestap=" + new Date().getTime();
                console.info("嗅探网络----");
                if (checkTime > 1) {
                    checkTime--;
                    setTimeout(function () {
                        xiuNet(def)
                    }, 1000);
                } else {
                    def.resolve(true);
                }
            } else {
                def.resolve(false);
            }
            return def.promise();
        }
        //检测网络,是否可以连接公网
        var cnetTime = 3; //检测网络次数
        netWork = function (def) {
            if (def == null) { def = $.Deferred(); }
            $.ajax({
                type: "get",
                timeout: 2000,
                dataType: "jsonp",
                jsonp: "callback",
                url: 'https://jktv.tv/shphone/ver.txt',
                success: function (data) { },
                error: function (xhr) {
                    $("#ddd").html("status:" + xhr.status)
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        def.resolve(true);
                    } else {
                        if (cnetTime > 1) {
                            cnetTime--;
                            setTimeout(function () {
                                netWork(def)
                            }, 200);
                        } else {
                            def.resolve(false);
                        }
                    }
                }
            });
            return def.promise();
        }
    })();
                                

调用:

                                        
    $(function () {
        checkNet().then(function (res) {
            if (res) {   
                alert("连网成功");
            } else {   
                alert("连网失败");
            }
        })
    });
                                


Tags: JavaScript/Jquery

很赞哦! (0)

评 论

点击排行

系统处理中...