javascript阻止scroll事件多次執(zhí)行的思路及實現(xiàn)
更新時間:2013年11月08日 17:34:55 投稿:whsnow
阻止scroll事件多次執(zhí)行主要是為了解決一些常見網(wǎng)頁特效在js解析時預期與效果不同,感興趣的朋友可以了解下
寫這個主要是為了解決一些常見網(wǎng)頁特效在js解析時預期與效果不同。
原始代碼 :
復制代碼 代碼如下:
//測試代碼
window.onscroll = function(){
alert("haha");
}
裝在script標簽內(nèi) 鼠標滑動之后一直惦記 提示框才可以,所以很不方便 ,
而且 目的是鼠標滑動后 只執(zhí)行一次事件,這個效果顯然和實際不符合吧。
//代碼改進--增加延時器。
既然scroll事件是一個連續(xù)觸發(fā)事件,那我設置一個延遲器,在用戶滑動鼠標的時間后執(zhí)行該函數(shù) ,書不是就可以只執(zhí)行一次啦 。
復制代碼 代碼如下:
//測試代碼:
function haha(){
alert("haha");
}
window.onscroll = function(){
setTimeout(haha,500);
}
結(jié)果發(fā)現(xiàn)該死的 還是和上面一樣 要彈出很多的警告框--可見 scroll事件像隊列一樣排成一行 ,按順序執(zhí)行 ,所以此路不通,另想辦法啊。
通過條件控制事件執(zhí)行 ,這個是個不錯的方法
復制代碼 代碼如下:
function haha(){
alert("haha");
}
var tur = true; //創(chuàng)建條件
window.onscroll = function(){
if(tur){ setTimeout(haha,500); tur = false; }
else
{}
}
慶幸的是,鼠標滾動執(zhí)行一次代碼 ,問題是 當再次滾動鼠標之后 ,事件再也不執(zhí)行了。
原因就是條件被設置為false 所以后續(xù)的事件永遠不執(zhí)行了。
思路就是 條件判斷+延遲執(zhí)行 就可以解決這個問題。在事件執(zhí)行之初,復活變量。
復制代碼 代碼如下:
var tur = true;
function haha(){alert("haha"); tur = true; }
window.onscroll = function(){
if(tur){ setTimeout(haha,1000); tur = false;
}else{ }
}
相關文章
JavaScript判斷表單中多選框checkbox選中個數(shù)的方法
這篇文章主要介紹了JavaScript判斷表單中多選框checkbox選中個數(shù)的方法,涉及javascript針對checkbox復選框的遍歷與判斷技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08

