在移动IE上禁用标注(上下文菜单)
在网络应用程序中,我需要禁用移动浏览器在触摸目标(例如<img>
或链接)上触摸并保持(“长按”)时显示的默认标注。
我已经在iPhone和iPad上使用-webkit-touch-callout: none
。 我试过-ms-touch-action:none
和touch-action:none
用于IE,但这似乎不起作用(在IE11,Windows Phone 8上测试过)。
W3邮件列表中的这篇文章建议为Javascript中的“contextmenu”事件添加一个监听器,并调用e.preventDefault()
。 这似乎也不起作用。
有什么建议么?
我做了大量的研究,据我所知这些是你的两个选择:
<div>
来覆盖链接/图像 style="background: url(yourimage.png)"
的<div>
而不是<img src="yourimage.png">
核心问题是Windows Phone上的移动IE无法正确处理带有contextmenu
事件的preventDefault
。 这是做到这一点的正确方法,它适用于所有其他浏览器。 在WP IE上触发contextmenu
事件,但实际上在长按上下文菜单被解除时发生。 在显示菜单之前应该会发生这种情况,以便您可以预防它。
以下是我尝试过的其他一些选项:
事件:我尝试注册每个事件并使用e.preventDefault()
, e.stopPropagation()
并return false
以防止所有默认操作。 JSBin例子。
使用element:before
或element:after
将元素放置在链接或图像的顶部。 我认为这可能会自动做透明的<div>
。 不幸的是:before
或:after
内容是<a>
一部分,所以它也是全部可点击的。 另外, <img>
元素不支持:before
或:after
。 JSBin例子。
user-select: none
-ms-touch-action
-webkit-touch-callout: none
我尝试了每个“正常”或“优雅”选项,但显然IE11手机忽略了其中的每一个。
preventDefault
方法:https: preventDefault
v= preventDefault
oncontextmenu
回调与stopPropagation
和preventDefault
实际工作的唯一的东西是旧的丑陋的div-over-image:
<div class="img-container">
<img src="path/to/image.jpeg" />
<div class="cover"></div>
</div>
CSS:
.img-container {
position: relative;
}
.cover {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
链接地址: http://www.djcxy.com/p/83743.html