...我问的原因是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的神可以提出一些建议。我真的希望能够使用空格键来执行此命令。
答案 0 :(得分:2)
如果您知道要滚动到文档的哪个位置,那么您可以简单地使用命名锚点。将document.location
设置为锚点(例如#top
,#div50
或其他)应该非常可靠。
答案 1 :(得分:-1)
在某些浏览器中使用document.documentElement.scrollTop = ...
(和document.body
)。