用例: - 如果用户正在滚动内部div,则在内部div末端达到时不应滚动外部div。无法停止内部div的结束时外部div的滚动
如果内部div已经达到最后,下面的代码可以很好地工作。即touchstart/touchmove事件在内部div达到结束之后触发。
但是,如果我不解除触摸并保持滚动,并且如果在此过程中内部div的末端已达到,它会开始滚动外部div。
$('body').find('.scrollableDiv').on(
{
'touchstart' : function(e) {
touchStartEvent = e;
},
'touchmove' : function(e) {
e.stopImmediatePropagation();
$this = $(this);
if ((e.originalEvent.touches[0].pageY > touchStartEvent.originalEvent.touches[0].pageY && this.scrollTop == 0) ||
(e.originalEvent.touches[0].pageY < touchStartEvent.originalEvent.touches[0].pageY && this.scrollTop + this.offsetHeight >= this.scrollHeight)){
e.preventDefault();
}
},
});
一旦达到内部div的末端,我该如何停止滚动? 我想在Android设备上的浏览器上实现此目的。在这方面有人可以帮助我吗?
注意:用户甚至应该能够滚动外部div。
在此先感谢。
这在我看来是一个坏主意。您试图编写属于Web浏览器本身的代码,以便在您的网站上以与其他网站上的工作方式不一致的方式更改浏览器的用户界面,方法是禁用用户可能需要的功能。 –
对不起,如果我没有说清楚我的观点。其实我试图给一个功能,用户可以滚动div和独立滚动内部div应该永远不滚动外部div。考虑一种情况,即用户在内部div中快速滚动,一旦内部div到达结束页面就会导致页面滚动,然后用户必须再次滚动页面以使内部div进入可见视图。这不是一个糟糕的用户体验吗? – Sashwat
Mozilla似乎同意你的观点,因为Firefox不会在任何平台上执行此操作,无论是在桌面上(使用滚轮)还是在移动设备上(使用手指)。苹果似乎不同意你的看法。我认为这可能是决定所属的地方,并试图使其在不同网站上以不同的方式工作,这本身就是糟糕的用户体验。 –