jquery:点击地址栏时iphone 5 safari上的scrollTop问题

时间:2013-03-12 09:41:54

标签: jquery iphone html web safari

我有一个跨浏览器和跨平台的webapp。在iPhone上,我设法使用$(document).scrollTop(0)隐藏地址栏;

下面是执行我想要做的事情的代码片段。

$(window).ready(function(){
$(window).scroll(function(){ /*detect scroll event*/
    setTimeout("ScrollWindowToTop();",0);
}); 
});
function ScrollWindowToTop(){
bodyelem=$("html,body"); /*i have tried this out with document,window, html, body*/
$(bodyelem).scrollTop(50);
}

我需要它在以下场景中工作: 1.当用户物理滚动页面时 2.当页面当前处于另一个滚动位置时,当我点击状态栏以使地址栏可见时,将调用上述函数并隐藏地址栏。

以上场景在iPhone 4S中完美实现。然而,第二种情况在iPhone 5中失败了。

有没有人知道在这里可以做些什么?

编辑: 我做了一些玩代码。在函数ScrollWindowToTop()中,我已按如下方式编辑它

function ScrollWindowToTop(){
   document.body.scrollTop=50;
}

但是,如果我在控制台中打印document.body.scrollTop的值,它会将值显示为0.知道为什么iPhone5中的Safari没有修改此属性的值吗?

1 个答案:

答案 0 :(得分:1)

好的,所以我发现了一个肮脏的修复。

$('body').on('touchstart', function (e){
  if (!$('.activeScroll').has($(e.target)).length){ 
    ScrollWindowToTop();
   }
}); 

我的页面上只有几个可滚动的元素,所以我在可滚动元素中添加了一个名为“ activeScroll ”的类。如果在任何不可滚动的元素上检测到“ touchstart ”,则会强制页面向上滚动。因此,如果地址栏决定它是讨厌的顽固自我而不是隐藏,那么页面上任何地方的触摸事件都会强制它重新启动。进入厄运之地。