代码改变世界

无依赖Ajax时钟

2010-10-26 20:30  BlueDream  阅读(1253)  评论(6编辑  收藏  举报
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title> 无依赖Ajax时钟 </title>
<style type="text/css">
#view
-time {width:400px;height:50px;font-size:40px;font-family:Arial;text-align:center;}
</style>
</head>
<body>
<div id="view-time"></div>
<div id="log"></div>
<script type="text/javascript">
if (typeof XMLHttpRequest == 'undefined') {
    window.XMLHttpRequest 
= function() {
        
var _ = ['Microsoft.XMLHTTP''Msxml2.XMLHTTP'];
        
for (var i = 0, l = _.length; i < l; i++) {
            
try {
                
return new ActiveXObject(_[i]);
            } 
catch(e) {}
        }
    };
}

var serverDate = function(fn) {
    
var B = new XMLHttpRequest();
    B.onreadystatechange 
= function() { B.readyState == 4 && fn(new Date(B.getResponseHeader('Date')))};
    B.open(
'HEAD''/?_=' + (-new Date));
    B.send(
null);
};

Date.prototype.format 
= function() {
    
return this.getFullYear() + '-'
    
+ ('0' + (this.getMonth() + 1)).slice(-2+ '-'
    
+ ('0' + (this.getDate())).slice(-2+ ' '
    
+ ('0' + (this.getHours())).slice(-2+ ':'
    
+ ('0' + (this.getMinutes())).slice(-2+ ':'
    
+ ('0' + (this.getSeconds())).slice(-2);
};
serverDate(
function(webTime) {
    
var view = document.getElementById('view-time'), diff = webTime - new Date();
    view.innerHTML 
= webTime.format();
    setInterval(
function() {
        view.innerHTML 
= (webTime.setTime(diff + new Date() * 1), webTime.format());
    }, 
500);
});
</script>
</body>
</html>