javascript - jQuery scrollTop 停止在最新版本的基于 webkit 的浏览器(Chrome 版本 61.0.3163.100)上工作?

标签 javascript jquery google-chrome

有趣的是,这已在所有浏览器上运行多年,但现在在最新版本的基于 webkit 的浏览器(Chrome 和 Opera)上停止运行。 就在一个月前它还在工作,但现在不再工作了:

$(document.body).scrollTop(0);
  //or using animation
$(document.body).animate({
  scrollTop:0
}, 500, "swing");

控制台中没有打印任何错误,只是根本不滚动。 相同的代码在 Microsoft Edge 等其他浏览器中运行良好。

那么谁能找出基于 webkit 的浏览器有什么问题,或者应该更新 jQuery 以与它们一起工作?

请注意,我不想找到一种方法来滚动它(因为我知道我们不需要 jQuery 并且总是有解决方法),我只是想对此进行一些解释,因为该代码已经使用多年,不应该永远停止工作。它会破坏很多网站的用户体验。

Demo

最佳答案

不确定这是否是基于 webkit 的浏览器更新的意图,但看起来 document.body 不被视为内部所有元素的直接容器(尽管如果应用 overflow:hidden 上面,里面的内容会按预期被触发)。滚动条似乎属于 document.documentElement(由 html 标记表示)。因此,如果我们将 document.body 替换为 document.documentElement,它就会再次运行。但是这可能不适用于其他浏览器(例如 Microsoft Edge),因此将两者都包括在内是安全的,例如:

$("html,body") ...
//or
$([document.documentElement, document.body]) ...

这次基于 webkit 的浏览器的更新仍然让人很困惑。

关于javascript - jQuery scrollTop 停止在最新版本的基于 webkit 的浏览器(Chrome 版本 61.0.3163.100)上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46678521/

相关文章:

google-chrome - 让 Selenium Chrome 驱动程序启动 "real"Chrome

javascript - React-Router ^2.4.0 错误。亲属路线找不到元素

jquery - 固定在溢出容器内的位置 - scrollToFixed

javascript - 具有两个固定导航的 anchor 链接 - 复杂

javascript - 滚动偏移和元素的两个条件

html - Css :focus working on firefox only. 其他浏览器不支持

javascript - chrome 中 document.registerElement 的替代代码

php - 正则表达式在 javascript 中有效,但在 PHP 中无效

javascript - XMLHttpRequest 身份验证在 Firefox 中不起作用

javascript - 整个站点使用一个 Django Channels websocket 消费者?