【问题标题】:Get distance of window from the top of document on page load (javascript only)在页面加载时获取窗口与文档顶部的距离(仅限 JavaScript)
【发布时间】:2011-03-28 04:11:34
【问题描述】:

我在计算页面加载时遇到了问题。它应该只需要一行,但我似乎无法理解。

【问题讨论】:

    标签: javascript window document onload offset


    【解决方案1】:

    您能否详细说明“窗口到文档的距离”是什么意思?如果您正在寻找屏幕高度/宽度:

    window.screen.height
    window.screen.width
    

    或

    window.screen.availHeight
    window.screen.availWidth
    

    垂直滚动位置使用:

    window.pageYOffset 
    window.scrollY
    

    我很确定它们是等价的,即

    window.pageYOffset == window.scrollY; // always true
    

    【讨论】:

    • 抱歉没有更清楚。我的意思是从窗口到文档顶部的距离。偏移量。就像您第一次打开页面时一样,它为零,因为窗口位于文档的最顶部。但是当你向下滚动时,从窗口到顶部有一段像素距离。你知道我的意思吗?
    • 哦,没问题,我想我明白你在说什么了。您是否尝试过使用 window.pageYOffset 或 window.scrollY ?我很确定它们是等效的,即 window.pageYOffset == window.scrollY; // 总是正确的
    • 是的,我尝试使用这些,但在页面加载时它总是等于 0。我最终得出的结论是,当您加载页面时,窗口位于注册 0 的最顶部,然后 insta-move 到正确的位置(例如,如果您在页面中途刷新或链接到#element) .这有意义吗?但是,我能够通过 window.onscroll 函数运行 pageYOffset 来获取该值,因为一旦它立即移动到正确的位置,它就会被视为滚动并运行该函数。我不知道它是这样工作的。感谢您的帮助!
    【解决方案2】:

    DSOC(文档滚动偏移坐标)可以通过 window.pageXOffset 和 window.pageYOffset 找到。在您的情况下,您需要 window.pageYOffset。

    更多细节在这里: http://www.javascriptkit.com/javatutors/static2.shtml

    【讨论】:

      【解决方案3】:

      我意识到这是一个老问题,但我遇到了同样的问题并想办法解决它。似乎window.scrollY 没有直接在页面加载时设置。但是,如果您执行以下操作,它将注册正确的值:

      window.setTimeout(function() { console.log(window.scrollY); }, 10);
      

      我已确定额外的 10 毫秒允许文档加载并设置window.scrollY 值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-27
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        相关资源
        最近更新 更多