【问题标题】:Javascript: scrollTo() vs scroll(), which is the accepted/standard methodJavascript:scrollTo() vs scroll(),这是公认的/标准方法
【发布时间】:2015-04-09 13:55:57
【问题描述】:

我知道scroll()scrollTo() 都做同样的事情,并且浏览器支持两者以确保向后兼容性,但哪一个已被弃用?我应该使用哪一个?有没有办法阻止浏览器在页面上存储滚动位置,这样我就不必在用户离开页面之前使用"beforeunload" 事件监听器将我的滚动位置重置为(0,0) ?我总是希望每次滚动位置都在 (0,0) 处呈现我的页面,因为它更像是一个互动游戏而不是一个网站,并且需要这个功能。

W3Schools 似乎只引用scrollTo(),所以这可能是标准。不过,"beforeunload" 事件监听器的解决方法会很好,这样我的页面总是从滚动位置 (0,0) 开始,而无需额外的监听器。

【问题讨论】:

    标签: javascript scroll web-standards


    【解决方案1】:

    W3 实际上在其 Window 接口规范中列出了这两种方法: http://www.w3.org/TR/cssom-view/#extensions-to-the-window-interface

    您可以安全地使用其中任何一个。

    【讨论】:

    • 确实,这就是一切在有任何标准之前的演变方式。不幸的是,我认为没有办法解决重置滚动位置的问题,因为我相信浏览器本身就可以处理这个问题。您也可以尝试在页面加载时强制滚动到 (0,0)。
    • 有没有办法强制滚动?现在使用“beforeunload”有效,但显式调用window.scrollTo(0,0) 似乎不起作用。
    • 我不确定 - 我自己没有尝试过,所以我将它作为建议提供。也许您可以尝试在内容开始加载后立即执行它,方法是在打开 <body> 元素之后或在关闭它之前放置 <script> 标签 </body>
    • scrollTo 在桌面上工作得很好。我认为我的问题可能与缩放有关,而不是与滚动位置有关。此外,Firefox for Android 是我有问题的浏览器。它在获得客户端尺寸之前在window.onload 之后触发屏幕resize 事件。从那以后,我开始接受几乎所有在网页设计中看起来标准的东西都可以作为跨浏览器解决方案。另一方面,scrollTo 通常工作得很好。我将坚持使用以上scroll 并继续在我所有的移动浏览器中进行测试,直到我做对为止。
    猜你喜欢
    • 1970-01-01
    • 2019-12-19
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多