- 精選名稱:JQuery Timers
- 授權模式:WTFPL
- 官方網頁:http://jquery.offput.ca/every/
- 官方展示:http://jquery.offput.ca/every/底端
有時候必需定時做一個動作,像是每n秒透過ajax發送訊息伺服器,取得更新資訊。一般的方式是使用Javascript的原生計時器函式clearInterval、clearTimeout、setInterval、setTimeout,不過原生函式在使用上不太直覺,而且無法快速的指定套用在某個特定的網頁元素,另外他的間隔單位是以毫秒去計算(1秒=1000毫秒),嗯…我想要每5分鐘做一次,那我要設定…60*60*1000=3600000秒…對吧?還是360000秒?這時候快從哆啦B夢口袋拿出了JQuery Timers這個法寶就能解決這麻煩的問題。
JQuery Timers提供了三個函式
- everyTime(時間間隔, [計時器名稱], 函式名稱, [次數限制], [等待函式程序完成])
- oneTime(時間間隔, [計時器名稱], 呼叫的函式)
- stopTime ([計時器名稱], [函式名稱])
官方雖然有Demo,但是卻沒有列出使用的原始碼,即便右鍵檢視原始碼,裡面也沒有完整針對每一種情況寫出一組程式說明,所以我只好試著測試函式了。以下為測試程式報告:
/*************************************************************
* everyTime(時間間隔, [計時器名稱], 函式名稱, [次數限制], [等待函式程序完成])
*************************************************************/
//每1秒執行函式test()
function test(){
//do something...
}
$('body').everyTime('1s',test);
//每1秒執行
$('body').everyTime('1s',function(){
//do something...
});
//每1秒執行,並命名計時器名稱為A
$('body').everyTime('1s','A',function(){
//do something...
});
//每20秒執行,最多5次,並命名計時器名稱為B
$('body').everyTime('2das','B',function(){
//do something...
},5);
//每20秒執行,無限次,並命名計時器名稱為C
//若時間間隔抵到,但函式程序仍未完成則需等待執行函式完成後再繼續計時
$('body').everyTime('2das','C',function(){
//執行一個會超過20秒以上的程式
},0,true);
/***********************************************************
* oneTime(時間間隔, [計時器名稱], 呼叫的函式)
***********************************************************/
//倒數10秒後執行
$('body').oneTime('1das',function(){
//do something...
});
//倒數100秒後執行,並命名計時器名稱為D
$('body').oneTime('1hs','D',function(){
//do something...
});
/************************************************************
* stopTime ([計時器名稱], [函式名稱])
************************************************************/
//停止所有的在$('body')上計時器
$('body').stopTime ();
//停止$('body')上名稱為A的計時器
$('body').stopTime ('A');
//停止$('body')上所有呼叫test()的計時器
$('body').stopTime (test);
如果你試著打開他的原始碼,你可以發現下列這段程式碼,正是時間間隔的字串縮寫,所以我們也可以自訂自己所需要的縮寫字串,像是分,時之類的
// Yeah this is major overkill... 'ms': 1, 'cs': 10, 'ds': 100, 's': 1000, 'das': 10000, 'hs': 100000, 'ks': 1000000, //自訂單位 'm': 60000, 'h': 360000
另外該作者也在網頁的開頭說明,他將程式碼移至jQuery區來做統一發佈管理,所以如果要下載該作者較新版的程式碼,請到http://plugins.jquery.com/project/timers 這邊下載,目前我所見到的是1.1.2版。
最後這邊值得一提的是他的授權方式,是WTFPL,如作者所說,「do whatever the fuck you want with it」換成中文的意思就是,呃…「管你他媽的怎麼用」XD,真是有夠阿莎力啦,比龜毛的GPL好太多了=3=。
JQuery Timers備存檔案載點
留言列表