由於現在部分瀏覽器基於對系統性能的優化,在使用setInterval的時候,在頁面沒有獲得關注的狀態,瀏覽器可以會自動將setInterval終端,等到該頁面重新獲得關注時再開啟。這樣就會使得一些基於setInterval的定時效果出現意想不到的問題;
解決的辦法就是使用setTimeout來模擬setInterval的效果。
具體實現過程如下:
var i = 0;
function time(){ //每隔1秒讓++i console.log(++i); setTimeout(time,1000); } time(); //執行time函數 btn.onclick = function(){ time = null; //重寫time函數,從而起到關閉定時器的效果 }