...我问的原因是 Safari 在其 scroll() 的实现中有一个错误,它破坏了我的 UI。
想象一个页面:
<body>
<div id="huge" style="width: 4000px; height: 4000px;"></div>
</body>
...这样您就可以获得水平和垂直滚动条。现在,通常当您按下滚动条时,页面会滚动(垂直)。出于我们花哨的 UI 的目的,我们不希望这种情况发生,所以我们压缩了 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 之神可以提出一些建议。我真的很想能够在这个命令中使用空格键。