如何在iPhone / HTML5中完全隐藏导航栏

问题描述 投票:26回答:4

我真的是移动HTML5的新手。我将jQuery Mobile用于当前的应用程序,但在隐藏导航栏时遇到一些问题。

我找到此站点:http://m.somethingborrowedmovie.warnerbros.com/。 (我不粘贴此链接来宣传电影。)

我对这个HTML5网站感到惊讶。是否有人对用于隐藏导航栏的方法有任何想法?

菜单也做得很好。是否有构建此类应用程序的框架?

html5 mobile iphone-standalone-web-app
4个回答
59
投票

尝试以下操作:

  1. 在HTML文件的meta中添加此head标记:

    <meta name="apple-mobile-web-app-capable" content="yes" />
    
  2. [在iPhone上使用Safari打开您的网站,并使用书签功能将您的网站添加到主屏幕。

  3. 返回主屏幕并打开加标签的站点。 URL和状态栏将消失。

只要您只需要使用iPhone,就可以使用此解决方案。

此外,您在warnerbros.com网站上的样本使用Sencha touch framework。您可以Google it了解更多信息,也可以check out their demos


34
投票

[Remy Sharp在他的文章"Doing it right: skipping the iPhone url bar"中对过程进行了很好的描述:

使iPhone隐藏网址栏非常简单,您需要运行以下JavaScript:

window.scrollTo(0, 1); 

但是有什么问题?您必须这样做一次高度正确,以便iPhone可以滚动到的第一个像素文档,否则它将尝试,然后高度将加载强制网址栏重新显示。

您可以等到图像加载完毕并且window.onload事件会触发,但这并不总是有效,如果所有内容都已缓存,事件触发得太早,scrollTo永远不会跳。这是使用window.onload的示例:http://jsbin.com/edifu4/4/

我个人使用计时器1秒钟-足够时间在等待渲染时移动设备,但足够长不会太早开火:

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

但是,如果是iPhone(或只是移动)浏览器,所以偷偷摸摸的嗅探(我一般不鼓励这样做,但我对此很满意,可以防止使用“正常”的桌面浏览器跳一个像素):

/mobile/i.test(navigator.userAgent) && setTimeout(function
() {   window.scrollTo(0, 1); }, 1000); 

这的最后一部分,这似乎是我在网上看到的一些例子中缺少的是:如果专门链接到网址片段的用户,即网址上的哈希值它,你不想跳。所以如果我导航到http://full-frontal.org/tickets#dayconf-我希望浏览器滚动很自然地到达id为dayconf的元素,而不跳到顶部使用scrollTo(0,1):

/mobile/i.test(navigator.userAgent) && !location.hash &&
setTimeout(function () {   window.scrollTo(0, 1); }, 1000);​

[在iPhone(或模拟器)上尝试一下http://jsbin.com/edifu4/10并且您会看到它只会在您登陆页面时滚动没有网址片段。


2
投票

到目前为止给出的所有答案的问题是,在某个借用的网站上,向上滚动时,Mac栏仍然完全隐藏,如果您只是使用scrollTo解决方案,然后用户向上滚动,则导航栏会再次显示,似乎是将整个网站都放在div中并进行滚动,因此与其滚动页面,不如滚动页面,而是在div中滚动并隐藏导航栏。显示导航栏的唯一方法是触摸屏幕顶部。


-3
投票

将简单的javascript文档导航到“#”即可。

window.onload = function()
{
document.location.href = "#";
}

这将迫使导航栏在加载时自行移除。

© www.soinside.com 2019 - 2024. All rights reserved.