- 精選名稱: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備存檔案載點
留言列表