在touchstart事件中阻止默认行为而不阻止滚动

3

有类似的问题,但解决方案要么涉及另一个库,要么使用点击事件 - 我想知道是否可以在没有库的情况下实现。

我使用一个touchstart事件来检测1.5秒的轻敲,然后重新加载该图像。 但是,在大多数移动设备上,当您按住图像一段时间时,它会显示弹出窗口,询问您是否要保存/复制该图像,我想要防止这种情况发生。

preventDefault()可以解决问题,但也会忽略图像上的滚动(如预期)。

那么,最好的方法是什么,可以在图像上允许滚动?

示例代码:

$('#the-image').bind('touchstart', function(event) {
    event.preventDefault();
    //detects long tap, then reloads etc
});

iOS有一个CSS属性(-webkit-touch-callout:none),在iOS设备上运行良好,但在非iOS设备上无效。

如有需要,请寻求帮助。

1个回答

0
尝试使用CSS的-webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none;,如果你可以的话。
还有一个不错的技巧是node.ontouchstart = node.onclick;,这样它会认为你在使用计算机鼠标。
请参阅在Android上禁用长按时的上下文菜单

1
“absorbEvent_”函数调用了“preventDefault()”方法,不幸的是这会禁用元素上的滚动。 - George
@George 很遗憾。 - Cilan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接