2012-03-10 74 views
6

我想制作html5全屏应用程序。我制作了一个页面,并将其添加为我的iphone的图标。我加元标签:如何禁用HTML5全屏iPhone应用程序中的弹跳?

<meta name="apple-mobile-web-app-capable" content="yes"> 
<meta name="apple-mobile-web-app-status-bar-style" content="black"> 
<meta name="viewport" content="width=device-width, user-scalable=no" /> 

我想实现的是:在上面的黑色状态栏(这不工作,我不知道为什么它仍然是默认状态栏......任何人的想法?)没有可能性放大(如在Facebook应用程序) - 这工作正常。

现在的问题 - 即使我的应用适合在屏幕上,我也可以在我的iPhone上滚动。它反弹回来,但我不想要这种行为。我想禁用该功能并启用特定div(.ui-content)的滚动功能。我怎样才能做到这一点?

编辑: 状态栏现在是黑色。它在一段时间后改变了。以前的版本是缓存在iphone上还是什么?

+0

http://www.hakoniemi.net/labs/scrollingOffset/nonbounce.html – 2013-04-07 20:54:38

回答

15

这将防止滚动整个页面

document.ontouchmove = function(e) {e.preventDefault()}; 

在你的情况,你想要一些div是滚动的,有的不是,你应该能够赶上事件在其到达前文件

scrollableDiv.ontouchmove = function(e) {e.stopPropagation()}; 
+1

此解决方案适合您吗?这确实停止了从safari内部运行时的弹跳,当在独立网页上时(通过“添加到主页”链接)页面一直弹起... – liorda 2013-04-14 18:27:52

+1

良好的尝试,大部分工作。除了启用滚动的元素滚动到顶部或底部。然后反弹效果仍然被触发。 – mrt 2013-07-29 11:15:27

+0

尽管这样做有效,但我遇到了一些问题,这些问题似乎导致点击/点击交互(如按钮)有时会失败(假设触发点击时触摸发生任何移动)。现在我的解决方法是,如果e.target是按钮,链接或输入元素,则不要调用preventDefault。 – 2015-09-21 20:08:22

1

如果您使用科尔多瓦1.7+,打开Cordova.plist文件和密钥UIWebViewBounce设置为NO

+0

在发布复制和粘贴样板/逐字回答多个问题时要小心,这些问题往往会被社区标记为“垃圾”。如果你这样做,那么它通常意味着问题是重复的,所以请将它们标记为:http://stackoverflow.com/a/12394389/419 – Kev 2012-09-12 21:58:45

+0

对不起。 – 2012-09-13 00:30:52

0

这里扩展dmanxii的做法是我们在做什么。

$("body").on("touchmove", function (event) { 
     if ($(event.target).is(".WhatEverClass") || $(event.target).parentsUntil().is(".ParentClass")) { 
      //console.log("NOT Disabled"); 
     } 
     else { 
      //console.log("Disabled"); 
      event.preventDefault(); 
     } 
    });