scrollTo() 和 jquery scrollTop() 在 Chrome 中不起作用

Posted

技术标签:

【中文标题】scrollTo() 和 jquery scrollTop() 在 Chrome 中不起作用【英文标题】:scrollTo() and jquery scrollTop() not working in Chrome 【发布时间】:2019-08-28 12:00:07 【问题描述】:

我正在制作一个使用 html 元素作为障碍的拼图平台游戏。有些级别我想从文档的底部开始。所以我尝试使用

$(document).ready(function() 
    $(document).scrollTop($(document).height() - $(window).height());

$(document).ready(function() 
    window.scrollTo(0, document.body.scrollHeight);

它们在 Firefox 中都可以正常工作,但在 Chrome 中都不能正常工作。我只有在为滚动设置动画时才能让它工作,这对我想要做的事情不起作用。

编辑:我没有使用 jQuery.toScroll() 我尝试了香草 toScroll 和 jQuery.scrollTop()

【问题讨论】:

请添加您遇到问题的 jQuery 和浏览器版本 $.scrollTo not working in Chrome的可能重复 【参考方案1】:

浏览器以不同的方式将滚动条附加到页面上。使用 $('html,body').scrollTop()。您还应该使用 $(window).innerHeight()。像这样……

$('html,body').scrollTop($(document).height() - $(window).innerHeight());

//Or to smooth scroll it

$('html,body').animate(
  scrollTop: $(document).height() - $(window).innerHeight()
, 1000);

注意:如果文档比窗口短,$(document).height() 将返回与 $(window).innerHeight() 相同的值。

【讨论】:

我发现问题是我使用的是 jQuery 2 :( 我不知道为什么,因为我所有的其他项目都使用最新版本。无论如何感谢您的帮助! 我还应该注意,如果文档比窗口短,$(document).height() 将返回与 $(window).innerHeight() 相同的值。出于您的目的,这无关紧要,因为目标只是滚动到底部,如果文档比窗口短,您无论如何都已经在底部了。【参考方案2】:

我没有执行完整的测试,但至少在特定的 jQuery 版本和最新的 Chrome 上,我也通过开发者工具遇到了这个问题。 animate 确实有效。 scrollTopscrollTo 都不起作用。尽管如此,即使您明确表示您不想使用 animate 我仍然推荐它,因为它正在工作,如果您像这样使用它,我认为没有理由不使用它:

$('html, body').animate(scrollTop: 500, 0);

这将滚动到 500 像素并且根本没有动画,因为持续时间设置为 0。我还必须指出 Chrome 的上一个问题:

Possible duplicate

Issue on Github

我知道这个问题已经结束,但它可能是相关的,可能应该报告它,因为有一些可疑的东西。

【讨论】:

我试过这个,当animate设置为0时它不起作用,0.1似乎起作用但它似乎不是很优雅 @Truce 0 确实有效,我在发布此答案之前尝试过,至少在我测试过的 jQuery 版本上

以上是关于scrollTo() 和 jquery scrollTop() 在 Chrome 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

javascript 使用纯javascript和没有jquery的ScrollTo动画

JS滚动页面操作

如何使用 JQuery $.scrollTo() 函数滚动窗口

javascript Uikit 3 Accordion + ScrollTo #uikit #jquery

jQuery scrollTo 插件在 iOS 上变成 Jerky

jQuery scrollTo 无法正常工作,html 设置为 100%