在移动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
