-1

所以,我喝了 web-app kool-aid,我正在从构建 Android 原生应用切换到构建 web 应用。

但是我在带有地址栏的 Android 浏览器上遇到了非常糟糕的问题(更新:具体来说,我的 HTC Desire Z 运行的是 Android 2.3.3,我不确定它会影响多少其他版本):

  • 问题 1:当页面加载时,地址栏隐藏了顶部约 30px 的内容。(到底为什么要这样做?!)
  • 问题 2:在某些情况下,地址栏不会消失 - 当连接速度较慢时,我在纵向时会出现这种情况。

所以在某些情况下,地址栏会永久隐藏前 30px 的内容。这是严重破坏。

我从另一个 StackOverflow 问题中借用了一些代码来尝试解决这个问题:

  if (navigator.userAgent.match(/Android/i)) {
    window.scrollTo(0,0); // reset in case prev not scrolled  
    var nPageH = $(document).height();
    var nViewH = window.outerHeight;
    if (nViewH > nPageH) {
      nViewH = nViewH / window.devicePixelRatio;
      $('BODY').css('height',nViewH + 'px');
    }
    window.scrollTo(0,1);
  } 

但它似乎不能可靠地工作 - 更不用说这是一个可怕的解决方案。我能做些什么?

4

2 回答 2

0

这是非 jQuery 解决方案,无需滚动即可立即删除地址栏。此外,它还可以在您旋转浏览器的方向时起作用。

function hideAddressBar(){
  if(document.documentElement.scrollHeight<window.outerHeight/window.devicePixelRatio)
    document.documentElement.style.height=(window.outerHeight/window.devicePixelRatio)+'px';
  setTimeout(window.scrollTo(1,1),0);
}
window.addEventListener("load",function(){hideAddressBar();});
window.addEventListener("orientationchange",hideAddressBar());

它也应该适用于 iPhone,但我无法对此进行测试。

于 2012-02-01T16:58:18.763 回答
0

你的手机和手机的安卓版本是多少?我有一个galaxy s2 - 地址栏没有实现为那里的覆盖,真正的内容在下面,而不是在地址栏后面。如果向下滚动,地址栏会向上,并且不再可见。无论如何,这不是一个错误,这是一个功能!如果他进入您的网站一次,用户就无法离开,如果您愿意这样做的话。如果您不想要这个“烦人”的地址栏,请创建一个带有WebView的“普通”android 应用程序,并在其中加载您想要的站点。

于 2011-12-16T18:56:36.383 回答