前端获取服务器时间

/** 
* @description 获取服务器时间(无需后台接口支持)
* @author [email protected]
* @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");
});

你可能感兴趣的:(前端获取服务器时间)