移动safari:window.pageYOffset / scrollY即使滚动也貌似忽略了导航栏的高度

时间:2011-01-12 15:56:33

标签: javascript mobile safari mobile-safari

所以我设置了一个滚动监听器:

window.onscroll = function (){
    alert(window.pageYOffset);  // have also tested with window.scrollY
}

而且,正如预期的那样,滚动完成后我会收到警报。我有调试控制台,也为此关闭,以免在移动浏览器中添加任何额外空间,因此执行alert()而不是console.log()。

现在,我也在做这个onload:

setTimeout(function()
{
    window.scrollTo(0, 0);
}, 33);

而且,正如预期的那样,导航栏会隐藏负载。我尝试在没有超时的情况下执行window.scrollTo(),直到我添加超时才失败。无论如何,这不是问题。我的导航栏隐藏了,这就是我想要的。

所以现在我将我的视口移动到0,0并且在滚动时警告触发,我希望拖动我的手指(向上滚动)以显示导航栏会告诉我window.pageOffsetY&lt ; 0或window.scrollY是< 0.事实并非如此。相反,我的警报在两种情况下都告诉我0,即使我已向上滚动以显示浏览器导航栏中的那些60px(视网膜上120px)。

我的问题是:有没有办法判断您是否正在滚动导航栏空间?

这样做的最终目标是始终将某些东西放在底部。除非我开始进入导航栏滚动空间,因为移动safari将scrollY / pageYOffset报告为0,即使还有更多滚动操作发生,我也可以正常滚动元素。

1 个答案:

答案 0 :(得分:1)

在iOS上你可以看看啊:

window.innerHeight  

如果您在视图中滚动导航栏,则innerHeight将小于416.min innerHeight应为416-60。又名356,它会让你知道完整的导航栏。