方法应该很多的,用JS的setInterval是其中一种。
解决方案 »
- 用JQUERY getJSON 跨域拿 HTML代码 怎么拿啊,我这个例子没成功
- jquery 处理json对象map
- 高手救命啊!!!我要定义一个全局的数组应该怎么写
- 为什么flash放在我的服务器上选项卡就会刷新(JS+flash的幻灯片)
- 怎么判断客户端是否隐藏了层就是隐藏了浮动页面元素呢?
- 求救...
- javascript 传递参数的问题
- 子窗体操作父窗体中ListBox出现问题,请赐教。
- 求一onkeydown后通过验证再提交的js代码
- 怎样出现一个说明信息?
- 怎样在自定义对象的方法中使用setTimeout或setInterval方法定时调用该对象的其他方法?
- 求js中动态添加onchick()事件(兼容ie和firefox等)
还有问题是,他是怎么得到实时数据的呢?
// Maxthon Website Scripts
////////////////////////////////////////////////////////////////////
var maxWebsite = {};maxWebsite.languages = {
"zh-cn": "zh-cn"
};
maxWebsite.counterLoadInterval = 10000; // ms
maxWebsite.counterDataURL = "http://www.maxthon.cn/api/counter";
maxWebsite.failedCounterCall = 0;//------------------------------------------------------------------
// Update Counter
//------------------------------------------------------------------
maxWebsite.updateCounter = function(){ if(maxWebsite.inCounterRequest) return;
if(maxWebsite.failedCounterCall>10) return; // first time only
if(!maxWebsite.targetCounterNumber){ maxWebsite.targetCounterNumber = 0;
maxWebsite.currentCounterNumber = 0;
maxWebsite.counterDiff = 0; // another request
maxWebsite.intervalLoad = setInterval("maxWebsite.updateCounter()", maxWebsite.counterLoadInterval); maxWebsite.intervalTick= setInterval("maxWebsite.counterTick()", 1000); } // load remote data
var req;
try { req = new XMLHttpRequest(); }
catch (e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) { return null; }} maxWebsite.startCounter = new Date(); try{ req.open("GET", maxWebsite.counterDataURL, true);
req.onreadystatechange = get_cb(req);
req.send('');
maxWebsite.inCounterRequest = true; }catch(e){
maxWebsite.failedCounterCall++;
} req = null;}function get_cb(req) {
return function() {
if (req.readyState == 4){
maxWebsite.updateCounterBinder(req);
req = null;
}
};
}//------------------------------------------------------------------
// Update Counter via Ajax - Binder
//------------------------------------------------------------------
maxWebsite.updateCounterBinder = function(req){ if(req.status == 200 || req.status==0){ var cnt = req.responseText;
cnt = parseInt(cnt.replace(/,/g,''), 10);
if(isNaN(cnt)) return; // first run
if(maxWebsite.targetCounterNumber == 0){
maxWebsite.targetCounterNumber = cnt - 10;
maxWebsite.currentCounterNumber = cnt - 10;
} maxWebsite.inCounterRequest = false;
maxWebsite.counterTick(cnt); }else{ maxWebsite.failedCounterCall++; }}
//------------------------------------------------------------------
// Write Value to Counter Area
//------------------------------------------------------------------
maxWebsite.writeCounter = function(intNumber){ intNumber = Math.round(intNumber);
if(intNumber == 0) return; var arrNumber = intNumber.toString().split("");
arrNumber.reverse(); var strNumber = []; var len = arrNumber.length - 1;
for(var i=0;i<len;i++){
strNumber.unshift(arrNumber[i]);
if(i%3 == 2) strNumber.unshift(",");
}
strNumber.unshift(arrNumber[len]); strNumber = strNumber.join(""); var obj = document.getElementById("counternumber");
if(obj) obj.innerHTML = strNumber;}
//------------------------------------------------------------------
// Counter Ticking
//------------------------------------------------------------------
maxWebsite.counterTick = function(intNumber){ if(intNumber){ // calculate diff
var diff = intNumber - maxWebsite.targetCounterNumber;
var timeDiff = maxWebsite.counterLoadInterval + (new Date() - maxWebsite.startCounter);
diff = diff / timeDiff; maxWebsite.counterDiff = diff * 1000; maxWebsite.currentCounterNumber = maxWebsite.targetCounterNumber;
maxWebsite.targetCounterNumber = intNumber; }else{ // just add up with diff
if(maxWebsite.currentCounterNumber < maxWebsite.targetCounterNumber){
maxWebsite.currentCounterNumber += maxWebsite.counterDiff;
} } maxWebsite.writeCounter(maxWebsite.currentCounterNumber);}
window.onload = maxWebsite.init;