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

如何解决懒加载与ScrollTo锚点滚动冲突、锚点链接仅二次点击生效问题?

懒加载与锚点滚动冲突的解决方案(锚点需二次点击生效问题)

针对懒加载导致锚点链接仅二次点击才生效、滚动中途停止的问题,这里提供一个可运行的完整JavaScript解决方案,融合了该问题下的部分解决思路。

const arrAnchor = Array.from(document.querySelectorAll('.c-ultro-blocks a')).filter(t => t.href.includes('#'))

if(arrAnchor.length > 0) {
    let elemTarget = null
    let offsetElement = 0
    let tmOutObserver = null
    let prevPosition = null

    const goLink = (evt) => {
        const id = evt.target.href.split('#').pop()

        elemTarget = document.getElementById(id)

        if(!elemTarget) {
            return
        }

        offsetElement = elemTarget.offsetTop

        window.scrollTo({
            top: offsetElement - 120,
            left: 0,
            behavior: "smooth"
        })

        tmOutObserver = setTimeout(checkScroll, 20)
    }

    const scrollDone = () => {
        offsetElement = elemTarget.offsetTop
        if (offsetElement > window.scrollY + 120) {
            window.scrollTo({
                top: offsetElement - 120,
                left: 0,
                behavior: "smooth"
            })
            prevPosition = null
            checkScroll()
        }
    }

    const checkScroll = () => {
        if (window.scrollY === prevPosition) {
            scrollDone()
            return
        }
        prevPosition = window.scrollY
        tmOutObserver = setTimeout(checkScroll, 20)
    }

    arrAnchor.forEach(aElem => {
        aElem.addEventListener('click', goLink)
    })
}
  • 此为该问题的一种可行解决方案

内容的提问来源于stack exchange,提问作者Olivier Heimerdinger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:05:32