gpt4 book ai didi

javascript - 有没有不使用 scroll() 或 scrollTo() 就可以设置窗口滚动位置的方法?

转载 作者:行者123 更新时间:2023-11-29 15:51:28 25 4
gpt4 key购买 nike

...我问的原因是 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 之神可以提出一些建议。我真的很想能够为此命令使用空格键。

最佳答案

如果您知道要滚动到文档中的哪个位置,则可以简单地使用命名 anchor 。将 document.location 设置为 anchor (例如 #top#div50 或其他)应该非常可靠。

关于javascript - 有没有不使用 scroll() 或 scrollTo() 就可以设置窗口滚动位置的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5139529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com