... причина, по которой я спрашиваю, состоит в том, что в Safari есть ошибка в реализации scroll (), которая нарушает мой пользовательский интерфейс.
Представьте себе страницу:
<body>
<div id="huge" style="width: 4000px; height: 4000px;"></div>
</body>
... так что вы получаете как горизонтальные, так и вертикальные полосы прокрутки. Теперь, обычно, когда вы нажимаете полосу прокрутки, страница прокручивается (вертикально). В целях нашего необычного пользовательского интерфейса мы не хотим, чтобы это произошло, поэтому мы подавляем событие keyDown:
window.onkeydown = function(e) {
if(e.keyCode == 32)
{
return false;
}
};
Это прекрасно работает ... если только мы не решим, что вместо того, чтобы вообще запретить прокрутку, нам нужно наше собственное, настраиваемое поведение прокрутки:
window.onkeydown = function(e) {
if(e.keyCode == 32)
{
window.scroll(foo, bar); // Causes odd behavior in Safari
return false;
}
};
В других браузерах (Chrome, Firefox) это мгновенно сместит позицию прокрутки окна к желаемым координатам. Но в Safari это заставляет окно анимировать до нужной позиции прокрутки, подобно анимации прокрутки, которая происходит при нажатии клавиши пробела.
Обратите внимание, что если вы запустите эту прокрутку с любой клавиши ДРУГОЙ, чем пробел, анимация не будет выполняться; окно прокручивается мгновенно, как и в других браузерах.
Если вы прокручиваете, скажем, 1000 пикселей или более, анимированная прокрутка может вызвать серьезный дискомфорт.
Я чешу голову, пытаясь найти способ обойти это. Я подозреваю, что его нет, но я надеюсь, что какой-нибудь Бог Javascript здесь может что-то подсказать. Мне бы очень хотелось использовать пробел для этой команды.