我问这个问题的原因是,Safari在其scroll()实现中存在一个bug,导致我的用户界面出现问题。
想象一个页面:
<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之神能提出建议。我真的很想能够使用空格键执行此命令。