Javascript 部分禁用全屏iOS web应用中的滚动反弹
有人能帮我解决以下问题吗 我有一个简单的全屏web应用程序(针对iOS和mobile safari),它包括一个标题和一个可滚动列表 我申请了:Javascript 部分禁用全屏iOS web应用中的滚动反弹,javascript,html,css,mobile-safari,Javascript,Html,Css,Mobile Safari,有人能帮我解决以下问题吗 我有一个简单的全屏web应用程序(针对iOS和mobile safari),它包括一个标题和一个可滚动列表 我申请了: overflow: scroll; -webkit-overflow-scrolling: touch; 对于可滚动元素,我应用了以下javascript: document.addEventListener("touchmove", function (e) { e.preventDefault(); }, false); var the
overflow: scroll;
-webkit-overflow-scrolling: touch;
对于可滚动元素,我应用了以下javascript:
document.addEventListener("touchmove", function (e) {
e.preventDefault();
}, false);
var theWrapper = document.getElementById("wrapper");
theWrapper.ontouchmove = function(e){
console.log(e);
e.stopPropagation();
e.stopImmediatePropagation();
// e.preventDefault();
};
试图防止滚动反弹发生
这在一定程度上是成功的,因为如果你尝试从标题滚动,赠品web应用程序不会反弹,但如果你将列表滚动到最末端(即,在列表顶部时向上滚动,或在列表底部时向下滚动),滚动的东西似乎会冒出气泡,整个应用程序都会滚动反弹
我已经在JS-Bin上做了一个演示,这样你就可以自己体验这种行为了(对不起,只适用于iPhone/iPad,它在桌面浏览器上正常工作*):
将演示添加到iphone主屏幕以获得最佳效果
非常感谢您能提供的任何帮助。这真的令人沮丧,我相信这一定是一个常见的问题
*事实上,刚刚更新到山狮和最新的Safari,其行为与现在的移动Safari相同。如果您使用“触摸板上的两个手指滚动”,则是相同的。如果您尝试在列表处于极限时滚动,它会“反弹”。我手头没有任何触摸设备可以提供足够好的webkit,但您是否尝试添加“e.cancelBubble=true;”
或者可以结合使用捕获和气泡阶段事件监听器以及stopPropagation进行播放。谢谢@miko。似乎cancelBubble已经被弃用了:赞成e.stopPropagation()。无论如何我都试过了,但不幸的是没用。