js智能判斷是否可以自動滾動
比如,做一個音樂播放器,邊播放,邊定位歌詞,播放的時候,需要自動定位到播放語句,但是用戶去拖動或者滾動div(歌詞面板)時,這時就必須停止自動滾動,或者說是不能自動滾動,這個怎么做呢? 如果能時時判斷 用戶是否在滾動就好了? 或者能夠 知道滾動開始 和 結束事件 也行? 可惜均不知道! 目前,僅可以利用的就是div元素的滾動事件,下面是我的實現思路,如何判斷用戶是否滾動停止?
1.html代碼
<div id="panel"> <div id="div1"></div> <div id="div2"></div> <a name="div3Anchor"> </a> <div id="div3"></div> </div>
2.js代碼
//默認,播放時可以自動定位播放語句 window.canAutoScroll = true; //只要滾動事件發生,就停止自動滾動定位方法的執行 var timeout = null; var panel = $("#panel"); panel.scroll(function(){ if(timeout != null){ window.clearTimeout(timeout); } window.canAutoScroll = false; //500ms后,假定認為停止滾動 timeout = window.setTimeout(function(){ window.canAutoScroll = true; },500); }); //播放事件 var playEvent = function(time){ //滾動到指定語句 var autoScroll = function(){ var panel = $("#panel");
var div3 = document.getElementById("div3"); panel.animate({ scrollTop: div3.offsetTop - panel.height() / 2 }, 200); } if(window.canAutoScroll){ autoScroll(); } }
