默认长按屏幕(例如长按 1 秒)将显示保存图像/复制选项。但是,我想为我的网络应用关闭该功能,可以吗?我试图将 touchmove 事件替换为 selectall,但它不起作用。感谢您的帮助。
addEventListener('touchmove', function(e) { e.preventDefault(); }, true);
默认长按屏幕(例如长按 1 秒)将显示保存图像/复制选项。但是,我想为我的网络应用关闭该功能,可以吗?我试图将 touchmove 事件替换为 selectall,但它不起作用。感谢您的帮助。
addEventListener('touchmove', function(e) { e.preventDefault(); }, true);
不仅禁用 preventDefault,还禁用其他属性可能是有益的:
e.preventDefault();
e.cancelBubble = true;
e.returnValue = false;
return false;
还有这个事件,你确定是 touchmove 吗?
我认为值得一提的是,您可以使用纯 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
”,您甚至可能不需要关闭指针事件,但我不确定。我也更新了 CodePen。