从浏览器中删除地址栏(在Android上查看)

Six*_*cks 45 javascript mobile android

有谁知道如何从Android浏览器中删除地址栏以更好地查看我的网络应用程序并使其看起来更像本机应用程序?

小智 45

您可以使用下一个代码执行此操作

 if(navigator.userAgent.match(/Android/i)){
    window.scrollTo(0,1);
 }
Run Code Online (Sandbox Code Playgroud)

我希望它对你有所帮助!

  • 请注意,这仅在您有足够的页面内容需要滚动页面时才有效.如果你不这样做,那么你应该使用一堆<br />标签或使用CSS在页面高度上添加更多空间.这在jQuery函数中很有用,它可以检测视口高度并为页面高度添加必要的空间. (12认同)

Tim*_*kel 32

这是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",function(){hideAddressBar();});
Run Code Online (Sandbox Code Playgroud)

它也适用于iPhone,但我无法测试.

  • 我想你的意思是将scrollTo()调用放在一个匿名函数中,以便setTimeout()调用? (8认同)
  • @Erwinus:超时的原因是滚动发生在"load"或"orientationchange"的事件处理完成之后(就考虑脚本而言,JavaScript总是*单线程).我指出的错误是他在hideAddressBar中调用scrollTo(1,1),然后将scrollTo的返回值传递给setTimeout.相反,它应该是:setTimeout(function(){window.scrollTo(1,1);},0) (3认同)

Vol*_*ike 14

如果已加载jQuery,则可以查看内容的高度是否大于视口高度.如果没有,那么你可以使它高度(或少一点).我在Android模拟器中以WVGA800模式运行以下代码,然后在我的Samsung Galaxy Tab上运行它,在这两种情况下它都隐藏了地址栏.

$(document).ready(function() {

  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 -= 250;
      $('BODY').css('height',nViewH + 'px');
    }
    window.scrollTo(0,1);
  }

});
Run Code Online (Sandbox Code Playgroud)


小智 10

参考Volomike的回答,我建议更换线路

nViewH -= 250;
Run Code Online (Sandbox Code Playgroud)

nViewH = nViewH / window.devicePixelRatio;
Run Code Online (Sandbox Code Playgroud)

它完全像我检查HTC Magic(PixelRatio = 1)和三星Galaxy Tab 7"(PixelRatio = 1.5).