[英]Is there a way to set the window's scroll position without using scroll() or scrollTo()?
...我问的原因是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的神可以提出一些建议。 我真的希望能够使用空格键来执行此命令。
如果您知道要滚动到文档的哪个位置,则只需使用命名锚点即可。 设置document.location
到锚(如#top
, #div50
或其他)应该是非常可靠的。
使用document.documentElement.scrollTop = ...
(以及某些浏览器中的document.body
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.