Differentiate between a scroll caused by .scrollLeft and a user trying to scroll in an HTML page
I have a scrollbar that has to follow some timeline. It is being constantly scrolled with .scrollLeft
using setInterval
.
I still want the user to 开发者_如何学编程be able to naturally take control and just drag the scrollbar away. If I can detect the user did that, I would just turn off the setInterval
timer and leave the control to the user until he explicitly turns the auto scroll back on.
Is there a way to differentiate the user scroll event, from the scroll created by .scrollLeft
?
You can set a flag before changing scrollLeft
and clear it afterwards, then check the flag in the scroll
event.
Since Javascript is run on the UI thread, it is not possible for the user to scroll while your code is running.
One alternative is to give up using a scroll-bar at all and do it using CSS and a jQuery slider control. This also gives you the option of making it look more like a time-line. you can set the scroller elements to whatever CSS you want.
There are a few out there, but it's not too hard to roll-your-own using a jQuery draggable control and constraining one axis inside a long, narrow container DIV.
精彩评论