禁用iPad Safari浏览器长按默认功能

5

默认情况下,长按屏幕(例如长按1秒)会显示保存图像/复制的选项。但是,我想为我的Web应用程序关闭该功能,这可能吗?我已尝试将touchmove事件替换为selectall,但它不起作用。谢谢帮助。

addEventListener('touchmove', function(e) { e.preventDefault(); }, true);

1
你确定你正在监听正确的事件('touchmove')吗? 如果我想在iPad上保存一张图片,我不能移动手指(太多),否则弹出窗口不会显示。 - Cerbrus
肯定touchmove不是正确的事件,因此我想知道正确的事件名称是什么。 - user782104
1
看一下触摸事件的不同事件处理程序。(我不确定你甚至能否阻止“保存?”对话框) - Cerbrus
2个回答

4

禁用preventDefault可能是有益的,同时禁用其他属性也是如此:

e.preventDefault(); 
e.cancelBubble = true;
e.returnValue = false;
return false;

还有这个事件,你确定是touchmove吗?


2
"stopPropagation" 是仅适用于IE的功能,OP正在寻求iPad的相应功能。 - Cerbrus

3
我认为值得一提的是,您可以使用纯CSS实现此操作。这可能不是一个很好的想法,因为IE10和Opera Mobile都不支持它。但是它确实可以做到,在将来,这可能比使用JavaScript更好的方法。或者,如果您只谈论iPhone和iPad,则此方法非常有效。以下是一个示例在CodePen上的链接
代码很简单:
.notouch {
    pointer-events: none;
}

只需将 notouch 类应用于您想要影响的任何图像即可。
如果您希望对页面上的每个图像进行此操作,请执行以下操作:
img {
    pointer-events: none;
}

我需要就可用性发表一次强制性的演讲。如果您这样做,将覆盖人们期望始终存在的默认功能,这会导致非常糟糕的体验,除非您有一个非常好的理由关闭此类功能。因此,请确保您这样做。

编辑

要去掉放大镜,请使用以下代码:

.notouch {
    pointer-events: none;
    -webkit-user-select:none;
}

如果将-webkit-user-select设置为“none”,您甚至可能不需要关闭指针事件,但我不确定。我也更新了CodePen。


谢谢,如果指针事件被禁用,会显示一个放大镜,有没有办法也将其禁用? - user782104
我想我找到了一种方法。正在更新答案。 - Timothy Miller

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