有趣的是,这已在所有浏览器上运行多年,但现在在最新版本的基于 webkit 的浏览器(Chrome 和 Opera)上停止运行。 就在一个月前它还在工作,但现在不再工作了:
$(document.body).scrollTop(0);
//or using animation
$(document.body).animate({
scrollTop:0
}, 500, "swing");
控制台中没有打印任何错误,只是根本不滚动。 相同的代码在 Microsoft Edge 等其他浏览器中运行良好。
那么谁能找出基于 webkit 的浏览器有什么问题,或者应该更新 jQuery 以与它们一起工作?
请注意,我不想找到一种方法来滚动它(因为我知道我们不需要 jQuery 并且总是有解决方法),我只是想对此进行一些解释,因为该代码已经使用多年,不应该永远停止工作。它会破坏很多网站的用户体验。
最佳答案
不确定这是否是基于 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/