Android网络浏览器中的错误:地址栏隐藏内容

时间:2011-12-16 18:48:48

标签: android html web-applications mobile android-browser

所以,我已经喝醉了网络应用程序kool-aid,我正在从构建Android原生应用程序转向构建网络应用程序。

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

  • 问题1:页面加载时,地址栏隐藏 最高~30px的内容。 (为什么它会这样做?!)
  • 问题2: 在某些情况下,地址栏不会消失 - 这种情况会发生 当连接速度很慢时,我在画像中。

因此,在某些情况下,地址栏会永久隐藏前30个内容。这严重破坏了。

我借用another StackOverflow question中的一些代码来尝试解决此问题:

  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);
  } 

但它似乎并不可靠 - 更不用说它是一个可怕的解决方案。我该怎么办?

2 个答案:

答案 0 :(得分:0)

你的手机和手机安卓版是什么?我有一个星系s2 - 地址栏没有实现作为覆盖,真实内容在下面,而不是在地址栏后面。如果向下滚动地址栏将会上升并且不再可见。无论如何,这不是一个错误,它是一个功能!如果他进入你的网站一次,如果你这样做,用户就无法离开。如果您不想要这个“恼人的”地址栏,请使用WebView创建一个“普通”的Android应用,并在其中加载您想要的网站。

答案 1 :(得分:0)

这是NON-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,但我无法测试。