亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

js onmousewheel事件多次觸發問題解決方法

2019-11-20 14:00:59
字體:
來源:轉載
供稿:網友

我想做一個首屏和第二屏之間滾動鼠標滾輪就可以整平切換的效果,遇到了很多問題,后來在kk的幫助下,終于解決了這個問題,甚是歡喜,于是記錄一下:

我最初的代碼是這樣的:

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><style>div {width: 700px;height: 1000px;}.red {background-color: red;}.yellow {background-color: yellow;}</style></head><body><div class="red"> </div><div class="yellow"> </div><div class="red"> </div><div class="yellow"> </div><div class="red"> </div></body><script src="../jQuery/jquery.min.js"></script><script src="test.js"></script></html>
$(document).ready(function(){var height = $(window).height(); //獲取瀏覽器窗口當前可見區域的大小    //鼠標滾動之后整屏切換var scrollFunc = function(e){var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;e = e || window.event;if((e.wheelDelta<0|| e.detail>0) && scrollTop>=0 && scrollTop<height){ //不同瀏覽器向下滾動 $(document.body).animate({scrollTop:height}, "fast");$(document.documentElement).animate({scrollTop:height}, "fast");}else if((e.wheelDelta>0 || e.detail<0) && scrollTop>=height && scrollTop<=height+20){ //不同瀏覽器向上滾動$(document.body).animate({scrollTop:0}, "fast");$(document.documentElement).animate({scrollTop:0}, "fast");}};    //注冊事件if(document.addEventListener){document.addEventListener('DOMMouseScroll',scrollFunc,false);}window.onmousewheel = document.onmousewheel = scrollFunc; //IE、chrome、safira});

這樣的代碼我在IE和火狐下測試都是正常的,但是在谷歌下onmousewheel事件總是會觸發多次,這是一個極其惱人的事情,為什么會多次觸發呢?經過調試,我發現是我們每次滾動鼠標時都是很“兇殘”的一下子滾動很大一個幅度,而不是一小格一小格的慢慢滾動,這就導致了滾動的時候會多次觸發onmousewheel事件,調用scrollFunc函數,在函數內的animate函數沒有執行完的時候還是不斷的被調用,這樣就會出現滾動多次滾動條滾不下來頁滾不上去的情況。于是,我將上面的js代碼改成了下面這樣:

$(document).ready(function(){var height = $(window).height();var scrollFunc = function(e){document.onmousewheel = undefined;var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;e = e || window.event;if((e.wheelDelta<0|| e.detail>0) && scrollTop>=0 && scrollTop<height){ $(document.body).animate({scrollTop:height}, "fast","linear",function(){document.onmousewheel = scrollFunc;});$(document.documentElement).animate({scrollTop:height}, "fast","linear",function(){document.onmousewheel = scrollFunc;});}else if((e.wheelDelta>0 || e.detail<0) && scrollTop>=height && scrollTop<=height+20){$(document.body).animate({scrollTop:0}, "fast","linear",function(){document.onmousewheel = scrollFunc;});$(document.documentElement).animate({scrollTop:0}, "fast","linear",function(){document.onmousewheel = scrollFunc;});}};if(document.addEventListener){document.addEventListener('DOMMouseScroll',scrollFunc,false);}document.onmousewheel = scrollFunc;});

好了,現在的代碼已經能夠正常運行了,不過由于我是一只菜鳥,代碼寫的不夠精致,又被kk說了,在他的提示下,我將冗余的代碼又進行了一番修改:

$(document).ready(function(){var height = $(window).height();var width = $(window).width();var body;if(navigator.userAgent.indexOf("Firefox")>0 || navigator.userAgent.indexOf("MSIE")>0){body = document.documentElement;}else{body = document.body;}var isFinish = true;var scrollFunc = function(e){if(isFinish){var scrollTop = body.scrollTop;e = e || window.event;if((e.wheelDelta<0|| e.detail>0) && scrollTop>=0 && scrollTop<height-20){ scroll(height);}else if((e.wheelDelta>0 || e.detail<0) && scrollTop>=height && scrollTop<=height+20){scroll(0);}}};var scroll = function(height){isFinish = false;$(body).animate({scrollTop:height},"fast","linear",function(){isFinish = true;});};if(navigator.userAgent.indexOf("Firefox")>0){if(document.addEventListener){document.addEventListener('DOMMouseScroll',scrollFunc,false);}}else{document.onmousewheel = scrollFunc;}});

終于得到簡介的代碼了,不得不說,通過解決這個問題,還是學到很多的。以后要向著“write less, do more”的目標更加努力了?。?!

如果有哪里寫的不對的,歡迎各位大神們指教,我會虛心學習的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
超碰精品一区二区三区乱码| 日韩最新中文字幕电影免费看| 亚洲精品美女视频| 亚洲色图18p| 亚洲最大在线视频| 永久免费精品影视网站| 国产精品白嫩美女在线观看| 欧美激情一区二区三区高清视频| 亚洲最大的成人网| 欧美理论电影在线播放| 日韩av电影手机在线| 久久精品在线视频| 国产日韩欧美在线观看| 国产成人精品在线视频| 日韩久久精品成人| 国产精品99久久久久久白浆小说| 亚洲精品综合精品自拍| 亚洲精品av在线| 亚洲国产一区二区三区四区| 一级做a爰片久久毛片美女图片| 国产午夜精品免费一区二区三区| 亚洲第一色中文字幕| 日韩精品在线观看视频| 欧美日韩不卡合集视频| 国产日韩亚洲欧美| 国内精品小视频| 欧美精品一区三区| 91热精品视频| 国产美女精品免费电影| 欧美日韩人人澡狠狠躁视频| 中文字幕视频一区二区在线有码| 中文字幕亚洲无线码a| 亚洲一区久久久| 成人免费黄色网| 国产香蕉精品视频一区二区三区| 91在线视频成人| 日韩欧美a级成人黄色| 北条麻妃一区二区三区中文字幕| 亚洲乱码国产乱码精品精| 欧美日韩亚洲天堂| 欧美电影在线观看网站| 91九色国产社区在线观看| 日韩电影免费在线观看| 国模精品视频一区二区三区| 国产成人午夜视频网址| 日韩精品在线视频美女| 色悠悠久久88| 九九九热精品免费视频观看网站| xvideos国产精品| 久久久久久久久国产精品| 91天堂在线视频| 俺去亚洲欧洲欧美日韩| 日韩亚洲国产中文字幕| 国产精品第一第二| 91网站免费看| 欧美大片免费观看| 91福利视频网| 欧美夫妻性生活xx| 粉嫩av一区二区三区免费野| 亚洲综合精品伊人久久| 日韩精品视频免费在线观看| 最新国产成人av网站网址麻豆| 欧美激情伊人电影| 91天堂在线视频| 欧美成人精品激情在线观看| 亚洲人成电影在线| 成人精品aaaa网站| 久久露脸国产精品| 久久久久久午夜| 亚洲人精选亚洲人成在线| 国产一区二区三区在线看| 国产成人免费91av在线| 亚洲大尺度美女在线| 欧美成人在线网站| 一本色道久久综合狠狠躁篇的优点| 一区二区在线视频| 国产精品露脸自拍| 91精品视频网站| 伊人久久综合97精品| 国产一区二区三区欧美| 亚洲成人网av| 日韩精品极品毛片系列视频| 日本久久91av| 久久精品成人欧美大片| 欧美伊久线香蕉线新在线| 欧洲一区二区视频| 国产精品久久久久不卡| 亚洲天天在线日亚洲洲精| 国产v综合v亚洲欧美久久| 欧洲亚洲在线视频| 亚洲伊人久久大香线蕉av| 日韩三级影视基地| 中文字幕v亚洲ⅴv天堂| 亚洲美女免费精品视频在线观看| 亚洲国产成人精品一区二区| 91精品国产自产在线| 伊人久久精品视频| 成人美女免费网站视频| 性视频1819p久久| 亚洲欧洲在线免费| 92看片淫黄大片欧美看国产片| 国产v综合v亚洲欧美久久| 狠狠色香婷婷久久亚洲精品| 久久综合免费视频| 亚洲qvod图片区电影| 一本色道久久综合狠狠躁篇怎么玩| 精品爽片免费看久久| 91香蕉亚洲精品| 亚洲18私人小影院| 国产99在线|中文| 久久精品这里热有精品| 欧美日韩国产二区| 国产一区二区成人| 国产精品第二页| 91精品国产91久久久久久吃药| 亚洲一区二区三区四区视频| 91免费的视频在线播放| 久久视频在线观看免费| 久久这里只有精品99| 最近2019年好看中文字幕视频| 成人免费视频网| 91久久在线观看| 亚洲精品国产精品国自产在线| 日韩av观看网址| 久久久亚洲成人| 中文字幕日韩免费视频| 久久视频精品在线| 亚洲第一中文字幕在线观看| 中文字幕av一区二区| 久久av红桃一区二区小说| 精品一区二区三区三区| 欧美专区国产专区| 97香蕉久久超级碰碰高清版| 国产在线播放不卡| 国产视频一区在线| 欧美一区深夜视频| 日韩av综合网| 日韩欧美一区视频| 在线看片第一页欧美| 91夜夜未满十八勿入爽爽影院| 欧美中在线观看| 久久久精品一区二区| 中文字幕日韩欧美在线视频| 热久久美女精品天天吊色| 日韩美女毛茸茸| 欧美性xxxxx极品| 亚洲欧美国产va在线影院| 亚洲精品www久久久| 成人亚洲综合色就1024| 久久69精品久久久久久国产越南| 成人网页在线免费观看| 日本精品视频网站| 久久精品视频导航| 国产精品日韩专区| 黄色成人av在线| 中文字幕国产精品| 色婷婷av一区二区三区久久| 日韩精品极品在线观看播放免费视频| 欧美—级a级欧美特级ar全黄| 色无极影院亚洲| 亚洲国产精品网站| 欧美日韩一区二区三区在线免费观看| 91久久国产精品91久久性色| 欧美性视频在线|