短信倒計時多用網頁臨時存儲,這可以保證網頁在關閉狀態也可記時。
1 <p class="test_button" id="getcode">獲取驗證碼</p> 2 3 <script type="text/javascript"> 4 //加載頁面訪問cookie,防止關閉網頁 5 var t=getCookie("codeTime")>0?setCodeTime($("#getcode")):""; 6 7 //短信倒計時事件 8 var countdown; 9 function setCodeTime(obj){ 10 countdown=getCookie("codeTime"); 11 if (countdown == 0) { 12 obj.html("獲取驗證碼"); 13 clearTimeout(mobRandomTime); 14 delCookie("codeTime"); 15 return; 16 } else { 17 obj.html(countdown + "秒重發"); 18 countdown--; 19 editCookie("codeTime",countdown,countdown); 20 } 21 mobRandomTime=setTimeout(function() { setCodeTime(obj) },1000) //每1000毫秒執行一次} 22 23 //短信發送事件,設定短信間隔 24 function phoneNote(obj,timeInterval){ 25 var obj=obj; 26 addCookie("codeTime",timeInterval,timeInterval); 27 setCodeTime(obj); 28 } 29 //觸發短信發送 30 $("#getcode").click(function(){ 31 var t=getCookie("codeTime")>0?"":phoneNote($("#getcode"),10); 32 }) 33 </script>
在當前頁狀態,每秒獲取並修改cookie。
同時Cookie不僅僅有名字和值兩個屬性,還有域(domain),過期時間(expires),路徑(path)等屬性。 其中,不同的域、不同的路徑下可以存在同樣名字的cookie。
1 //添加cookie
2 function addCookie(name,value,expireHours){
3 var cookieString=name+"="+escape(value)+"; path=/";//注意紅色話語,這是保證不會出現多個key的,只修改對應路徑的key
4 //判斷是否設置過期時間
5 if(expireHours>0){
6 var date=new Date();
7 date.setTime(date.getTime+expireHours*1000);
8 cookieString=cookieString+"; expire="+date.toGMTString();
9 }
10 document.cookie=cookieString;
11 }
12 //獲取cookie
13 function getCookie(name){
14 var strcookie=document.cookie;
15 var arrcookie=strcookie.split("; ");
16 for(var i=0;i<arrcookie.length;i++){
17 var arr=arrcookie[i].split("=");
18 if(arr[0]==name)return arr[1];
19 }
20 return "";
21 }
22 //修改cookie的值
23 function editCookie(name,value,expiresHours){
24 var cookieString=name+"="+escape(value)+"; path=/";//注意紅色話語,這是保證不會出現多個key的,只修改對應路徑的key
25 if(expiresHours>0){
26 var date=new Date();
27 date.setTime(date.getTime()+expiresHours*1000); //單位是毫秒
28 cookieString=cookieString+";expires=" + date.toGMTString();
29 }
30 document.cookie=cookieString;
31 }
32 //刪除cookie
33 function delCookie(name){//刪除cookie
34 var exp = new Date();
35 exp.setTime(exp.getTime() - 1);
36 var cval=getCookie(name);
37 if(cval!=null) document.cookie= name + "="+cval+"; path=/;expires="+exp.toGMTString();
38 }
