2011-01-12 158 views
2

所以,我已经建立了滚动监听器:移动Safari浏览器:window.pageYOffset/scrollY似乎忽略了导航栏的高度,即使它滚动

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和和警示射击滚动,我希望那种拖我的手指向下的动作(向上滚动)揭示导航栏会告诉我该窗口。 pageOffsetY < 0或window.scrollY是< 0.情况并非如此。相反,在这两种情况下,我的警报都会告诉我0,尽管我已经向上滚动显示浏览器导航栏的60px(视网膜上120px)。

我的问题是:有没有办法告诉你是否滚动到导航栏空间?

这样做的最终目的是让东西始终位于底部。除了当我开始进入导航栏滚动空间时,我的元素正在滚动空间,因为移动Safari浏览器将scrollY/pageYOffset报告为0,即使发生了更多滚动操作。

+3

当我开发MobileSafari我用`document.title`进行调试。 :D – Thai 2011-01-12 16:55:50

回答

1

啊iOS上,你可以看看:

window.innerHeight 

如果您在查看他的导航栏滚动,那么innerHeight将小于416分钟innerHeight应该是416-60。又名356,它会让你知道完整的导航栏在视图中。