前端获取服务器时间

/** 
* @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");
});

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容