无法隐藏Safari iOS 7 for iPhone/iPod touch中的导航栏

Ant*_*nyk 78 javascript safari html5 ios ios7

我不相信有任何解决方案可以使用javascript/css/html以编程方式隐藏栏,但让我试着描述一个问题.我们是移动游戏开发者团队,我们一直在开发游戏一年.

在iOS 7发布后,我们遇到了隐藏导航栏是不可能的问题.一旦用户点击Safari浏览器的上部或下部,导航栏就会再次出现并隐藏游戏的所有控件.

到目前为止我们找到的唯一解决方案是强制用户:

  1. 旋转设备
  2. 滚动页面
  3. 将应用程序添加到主屏幕

这些替代方案都不可接受.Apple似乎意识到了这个问题,但一直忽视它.他们关闭了一个报告的bug作为bug#14076889的副本.

我相信我们不是唯一遇到同样问题的团队.有谁知道解决方案?

tho*_*chs 118

2014年9月更新:iOS 8已删除该minimal-ui功能 除了依赖默认浏览器行为之外,再次无法删除/隐藏导航栏(滚动时将隐藏栏,但仅当滚动元素是BODY页面的栏时).唯一的"解决方法"是将应用程序保存到主屏幕并设置正确的元标记(见下文).

2014年8月更新:iOS 8(测试版)不再支持minimal-ui.没有解决方法.(原因可能是由于网站滥用它来试图阻止人们导航,因此iOS 8 Safari中可能还有一些尚未公开的新功能可以取代minimal-ui.)

iOS 7.1添加了一个新的API来解决这个问题:

<meta name="viewport" content="minimal-ui">
Run Code Online (Sandbox Code Playgroud)

默认情况下,此新视口标志会隐藏Safari UI(仅显示带有URL和SSL指示符的小标题栏).要访问Safari UI,用户必须主动点按此标题栏.

请注意,在iOS 7.0.x上,没有API或已知的解决方法.在这些版本中,如果您想永久隐藏Safari的浏览器镶边,您需要让用户将Web应用程序添加到主屏幕(设置相应的元标记<meta name="apple-mobile-web-app-capable" content="yes">)或使用某种本机应用程序包装,如Phonegap并通过App Store.

就个人而言,我希望他们没有删除他们在iOS 6 Mobile Safari中以横向模式引入的"全屏"按钮,这是一个让开发人员和用户满意的绝佳解决方案.

一个完美的候选者可以更永久地解决这个问题,因为Mobile Safari可以支持HTML5全屏API(OS X上的Safari支持!).唉,现在没有支持,历史上iOS点发布没有添加新的Safari功能,所以也许这适用于iOS 8.

  • 当从服务器接收时,此字符串("minimal-ui")是否需要成为HTML页面的一部分,或者是否可以动态修改视口并通过JavaScript添加/删除该字符串? (5认同)
  • 请注意,iOS 8 Beta4已取消对"minimal-ui",https://developer.apple.com/library/prerelease/ios/releasenotes/General/RN-iOSSDK-8.0/的支持,可能无法使用控制Mobile Safari将来的默认行为.http://stackoverflow.com/questions/24889100/ios-8-removed-minimal-ui-viewport-property-are-there-other-soft-fullscreen (2认同)
  • 对于iOS9,您可以使用minimal-ui仿真.例如:http://stackoverflow.com/a/26884561/2764408 (2认同)

Mar*_*ark 17

更新:根据发布说明中的论坛帖子,目前在iOS7.1 Beta中有一个元属性可用于修复此问题.

<meta name="viewport" content="minimal-ui">
Run Code Online (Sandbox Code Playgroud)

我已经运行了测试,可以确认此功能目前处于Beta 2状态.


小智 6

注意:新的minimal-ui选项是一个很好的解决方案,但它需要成为HTML响应的一部分.我尝试在iOS7.1 beta3上用JS附加视口元标记

$('head').append('<meta name="viewport" content="width=device-width, user-scalable=0, minimal-ui">');

浏览器忽略值"minimal-ui".

  • @shanebo那不是真的.`<meta name ="viewport"content ="width = device-width,minimal-ui">`在我测试的iPhone 5以及iOS模拟器上运行正常. (2认同)