按下Enter键触发scrollIntoView()时滚动中途停止的问题
问题:scrollIntoView平滑滚动在Chrome/Edge中按Enter提交表单时异常
项目场景
我正在开发一个项目列表,列表顶部设有添加新项目的表单(包含一个输入框和一个提交按钮)。表单提交后,通过代码document.getElementById(newItemId).scrollIntoView({ behavior: "smooth" });自动滚动到新元素的位置。为测试问题,我创建了包含50个项目的长列表,新项目均添加至列表底部。
问题表现
创建第51个项目时,不同操作方式的表现有差异:
- 点击提交按钮:Chrome、Firefox、Edge所有浏览器均正常,页面滚动至列表底部。
- 输入框聚焦时按Enter键提交:Chrome会在滚动中途停止;Edge停在新元素前方;仅Firefox能正常滚动到底部。
- 通过Tab切换到提交按钮后按Enter键:所有浏览器均正常滚动至目标位置。
补充说明
- 移除
behavior: "smooth"参数后,使用即时滚动无任何中断问题。 - 在简化测试场景中,表单触发滚动至第50个元素时,Chrome和Edge无滚动效果,Firefox表现正常。
临时方案与诉求
我已经通过window.scrollTo()实现了临时解决方案,但希望能使用scrollIntoView()来避免像素级的位置计算,同时希望确认该问题是否属于浏览器Bug。
内容的提问来源于stack exchange,提问作者CeuxDruman
相关产品推荐
相关产品推荐

