美文网首页
前端获取服务器时间

前端获取服务器时间

作者: 村长很忙 | 来源:发表于2017-05-02 16:20 被阅读251次
    /** 
    * @description 获取服务器时间(无需后台接口支持)
    * @author jamieyan@tencent.com
    * @param {Function} callback 成功回调
    * @param {Function} error    失败回调
    */
    function getServerTime(callback, error){
        var xhr, dateStr;
        if(window.XMLHttpRequest){
            xhr = new XMLHttpRequest();
        } else if(window.ActiveXObject){
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xhr.onreadystatechange = function(){
            // 一般ajax取readyState为4时处理,
            // 因为这里只需要response header,所以可以早一些就得到结果
            if(xhr.readyState === 3){
                // 从response header里取得Date字段,不区分大小写
                // 所有标准的HTTP服务都会返回Date
                // 这里的Date便是服务器时间了
                dateStr = xhr.getResponseHeader("Date");
                // 处理回调
                if (dateStr && ("function" === typeof callback)) {
                    callback(dateStr);
                } else if ("function" === typeof error){
                    error(xhr);
                }
                // 时间都已经取到了,可以把ajax停掉
                xhr.abort();
            }
        };
        // 这里的路径要根据你的实际情况选择
        // 因为有些服务器404返回会比较慢
        // 尽量选择返回body较小,反应速度快的路径
        xhr.open("GET", "/404.htm", true);
        xhr.send(null);
    }
    
    
    // 测试
    getServerTime(function(dateStr){
        alert(dateStr);
    }, function(){
        alert("error");
    });
    
    

    相关文章

      网友评论

          本文标题:前端获取服务器时间

          本文链接:https://www.haomeiwen.com/subject/fractxtx.html