You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JS/jQuery实现页面提交刷新后回到用户精确浏览位置

解决方案

方案1:存储滚动高度实现刷新后精准定位

该方案就是你提到的思路,通过本地临时存储记录提交前的滚动位置,页面加载完成后自动滚动到对应位置,实现代码如下:

原生JS实现

// 监听所有表单提交事件,提交前存储滚动高度
document.querySelectorAll('form').forEach(form => {
  form.addEventListener('submit', () => {
    sessionStorage.setItem('savedScrollY', window.scrollY.toString())
  })
})

// 等页面所有资源(含图片、评论内容)加载完成后执行滚动
window.addEventListener('load', () => {
  const savedPos = sessionStorage.getItem('savedScrollY')
  if (savedPos) {
    window.scrollTo(0, parseInt(savedPos))
    // 用完即删,避免下次打开页面误触发滚动
    sessionStorage.removeItem('savedScrollY')
  }
})

jQuery实现

// 提交前存储滚动高度
$('form').on('submit', function() {
  sessionStorage.setItem('savedScrollY', $(window).scrollTop())
})

// 页面全资源加载完成后滚动
$(window).on('load', function() {
  const savedPos = sessionStorage.getItem('savedScrollY')
  if (savedPos) {
    $(window).scrollTop(parseInt(savedPos))
    sessionStorage.removeItem('savedScrollY')
  }
})

注意:这里用window.load而非DOM就绪事件,是因为你的卡片包含不同尺寸的图片,DOM加载完成时图片可能还未渲染,页面整体高度不稳定,会导致滚动偏移,等所有资源加载完成后再滚动即可完全匹配之前的浏览位置。

方案2:无刷新AJAX提交(更推荐)

不需要刷新页面,自然不存在滚动位置丢失的问题,用户体验更好,实现代码如下:

原生JS实现

document.querySelectorAll('form').forEach(form => {
  form.addEventListener('submit', async (e) => {
    // 阻止表单默认提交刷新行为
    e.preventDefault()
    const formData = new FormData(form)
    const submitBtn = form.querySelector('button')

    try {
      const res = await fetch(form.action || window.location.href, {
        method: 'POST',
        body: formData
      })
      if (res.ok) {
        // 提交成功后自定义交互,比如修改按钮状态
        submitBtn.textContent = '已点赞'
        submitBtn.disabled = true
      }
    } catch (err) {
      console.error('提交失败', err)
    }
  })
})

jQuery实现

$('form').on('submit', function(e) {
  e.preventDefault()
  const $form = $(this)
  const $btn = $form.find('button')

  $.post($form.attr('action') || window.location.href, $form.serialize(), function() {
    $btn.text('已点赞').prop('disabled', true)
  }).fail(function() {
    alert('提交失败,请重试')
  })
})

内容的提问来源于stack exchange,提问作者Maddie Graham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:45:07