Javascript 移动web应用中删除地址栏的跨平台方法

Javascript 移动web应用中删除地址栏的跨平台方法,javascript,jquery,android,web-applications,mobile-safari,Javascript,Jquery,Android,Web Applications,Mobile Safari,我正在开发一个移动web应用程序,并试图删除地址栏。这很容易,除非的自然高度不足以允许滚动。尽管我可能会尝试,但我找不到可靠的iphone/android跨设备方法来确保足够高,可以让地址栏消失。我见过的许多方法都依赖于screen.height,这使得页面比需要的高。它应该足够高,足以让地址栏消失,而不是更高 有谁的脚本可以完美地处理这个问题吗?我只需要确定页面的高度减去iphone和android的地址栏 我试过: screen.height //too tall window.innerH

我正在开发一个移动web应用程序,并试图删除地址栏。这很容易,除非
的自然高度不足以允许滚动。尽管我可能会尝试,但我找不到可靠的iphone/android跨设备方法来确保
足够高,可以让地址栏消失。我见过的许多方法都依赖于
screen.height
,这使得页面比需要的高。它应该足够高,足以让地址栏消失,而不是更高

有谁的脚本可以完美地处理这个问题吗?我只需要确定页面的高度减去iphone和android的地址栏

我试过:

screen.height //too tall
window.innerHeight //too short
document.documentElement.clientHeight //too short
document.body.clientHeight //almost but too short

允许JQUERY。

我认为它的工作方式是在页面不适合的时候隐藏地址栏。因此,您需要一个与窗口高度完全相同的页面,包括地址栏,即
窗口。outerHeight
,no?

还有一些其他建议,但这是一个无意义、无需担心的页面,可以在a中找到并回答您的问题(粘贴在此处以方便起见):

这将隐藏地址栏,直到用户滚动

在超时函数中放置相同的方法(没有解释其合理性,但它声称没有它代码无法正常工作):


如果启用了jquery。。你可以试试$(window.height();或$(document.height();我两者都试过了$(窗口)提供带有地址栏的窗口高度$(文档)基于所讨论页面的太短高度,提供的高度小于该高度。不久前我遇到了类似的问题,我强调类似的问题。这段代码真的帮了我的忙:实际上我以前也用过。它适用于iPhone和右视口。问题是它太具体了,它不能以可靠的跨浏览器跨设备的未来验证方式解决问题。
window.innerHeight
在iOS中的window.scrollTo(0,1)之后变得更大。这是开源jqTouch库使用的属性和方法。我正在查找页面的可用高度减去地址栏。否则
$(window).height()
就可以了。嗯,但是这对隐藏地址栏有什么帮助呢?因为有些页面的内容很少。所以页面可能只有20px高。所以滚动到顶部没有任何作用。摆脱地址栏的唯一方法是将页面样式设置为足够高,滚动到顶部会将其删除。找到那个高度是个问题。那个高度就是窗户的外光。。。。。滚动到顶部是指底部,对吗?也许您想增加页面高度,但实际上您应该设置它。最后一个代码块解决了这个问题。但它用+50来解决这个问题。我们怎么知道地址栏在所有情况下都是50px高的呢?作为第一个真正提供解决方案的人,你会得到一张赞成票。我相信50px或多或少是任意的。scrollTo(0,1)语句使这一额外的数量不会简单地造成与设置高度过大时遇到的问题相同的问题。据我所知,正是这两者的结合使得它在所有情况下都能工作。我改变了答案的结构,将最后的代码块放在开头,因为据我所知,这是最好的解决方案。@PéterVarga 1的原因是iOS不喜欢0,0没有逻辑上的原因。
function hideAddressBar()
{
  if(!window.location.hash)
  {
      if(document.height < window.outerHeight)
      {
          document.body.style.height = (window.outerHeight + 50) + 'px';
      }

      setTimeout( function(){ window.scrollTo(0, 1); }, 50 );
  }
}

window.addEventListener("load", function(){ if(!window.pageYOffset){ hideAddressBar(); } } );
window.addEventListener("orientationchange", hideAddressBar );
window.addEventListener("load", function() { window.scrollTo(0, 1); });
// When ready...
window.addEventListener("load",function() {
  // Set a timeout...
  setTimeout(function(){
    // Hide the address bar!
    window.scrollTo(0, 1);
  }, 0);
});