【发布时间】:2019-02-16 22:38:03
【问题描述】:
我想在寡妇滚动后在输入上调用focus()。我正在使用scrollTo() 方法的平滑行为。问题是focus 方法削减了平滑行为。解决方案是在滚动结束后调用focus 函数。
但我找不到任何关于如何检测scrollTo 方法结束的文档或线程。
let el = document.getElementById('input')
let elScrollOffset = el.getBoundingClientRect().top
let scrollOffset = window.pageYOffset || document.documentElement.scrollTop
let padding = 12
window.scrollTo({
top: elScrollOffset + scrollOffset - padding,
behavior: 'smooth'
})
// wait for the end of scrolling and then
el.focus()
有什么想法吗?
【问题讨论】:
-
我真的不知道
scrollTo()是否存在回调,但我认为只有知道滚动的持续时间才能尝试setTimeout()! -
是的,我正在考虑,但我找不到
scrollTo方法的滚动持续时间:/ -
你可能想在使用你的hacky方法之前尝试this。
-
@Akaino 谢谢你的提示,在原版中,我只会在 onscroll 监听器中工作并观察页面偏移量。远不及我正在做的事情。
标签: javascript