4

默认长按屏幕(例如长按 1 秒)将显示保存图像/复制选项。但是,我想为我的网络应用关闭该功能,可以吗?我试图将 touchmove 事件替换为 selectall,但它不起作用。感谢您的帮助。

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

2 回答 2

4

不仅禁用 preventDefault,还禁用其他属性可能是有益的:

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

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

于 2012-12-19T09:32:24.167 回答
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”,您甚至可能不需要关闭指针事件,但我不确定。我也更新了 CodePen。

于 2012-12-20T03:01:32.670 回答