О, как этот вопрос убивает меня: /
Я нахожусь в процессе создания "бесконечной" прокрутки для просмотра больших файлов.
Что еще хуже, этот редактор встроен в страницу, которая имеет собственную полосу прокрутки, потому что она больше, чем один экран.
U использует прокрутку overflow-x для горизонтальной прокрутки, но для вертикальной прокрутки мне нужна текущая подсветка строки (как видно в большинстве современных IDE), поэтому я использую плагин jquery mousewheel и прокручиваю движущийся контент для высоты строки вверх или вниз.
Он отлично работает на Ubuntu / Chrome, но иногда на MacOS Lion / Chrome, а иногда и просто,
когда вы прокручиваете, это не мешает прокрутке по умолчанию на элементе редактора, и событие распространяется «вверх», и страница сама начинает прокручиваться.
Я даже не могу описать, насколько это раздражает.
Что касается инерциальной прокрутки, я успешно уменьшил ее с двумя таймерами
var self = this;
// mouse wheel events
$('#editorWrapper').mousewheel(function (event, delta, deltax, deltay) {
self._thisScroll = new Date().getTime();
//
//this is entirely because of Inertial scrolling feature on mac os :(
//
if((self._thisScroll - self._lastScroll) > 5){
//
//
// NOW i do actual moving of content
//
//
self._lastScroll = new Date().getTime();
}
5 мс - это значение, которое, как мне показалось, наиболее естественно на моем MacBook Pro, и вам нужно очень быстро прокрутить колесо мыши, чтобы поймать одного из них ..
Тем не менее, иногда на слушателе Mac на оболочке Mac не предотвращается использование по умолчанию, и страница прокручивается вниз.