/**
* @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");
});
网友评论