对于网站,我想在用户“长按”屏幕时显示自定义上下文菜单。我创建了一个jQuery 长按 https://github.com/pisi/Longclick我的代码中的侦听器以显示自定义上下文菜单。显示上下文菜单,但也显示 iPad 的默认上下文菜单!我试图通过添加一个来防止这种情况preventDefault() http://api.jquery.com/event.preventDefault/到我的监听器中的事件,但这不起作用:
function showContextMenu(e){
e.preventDefault();
// code to show custom context menu
}
$("#myId").click(500, showContextMenu);
问题
- 你能阻止iPad默认的上下文菜单显示吗?
- 可以使用 jQuery Longclick 插件来完成吗?
Longclick 插件对 iPad 有一些特定的处理(假设通过这个片段这是源代码 https://github.com/pisi/Longclick/blob/master/jquery.longclick.js):
if (!(/iphone|ipad|ipod/i).test(navigator.userAgent)){
$(this)
.bind(_mousedown_, schedule)
.bind([_mousemove_, _mouseup_, _mouseout_, _contextmenu_].join(' '), annul)
.bind(_click_, click)
}
所以我认为这回答了我的第二个问题(假设插件使用了正确的事件)。
感谢 JDandChips 的帮助pointing https://stackoverflow.com/a/12424987/880619我的解决方案。它与 longclick 插件完美结合。为了记录,我将发布我自己的答案来展示我所做的事情。
HTML:
<script type="text/javascript"
src="https://raw.github.com/pisi/Longclick/master/jquery.longclick-min.js"></script>
<p><a href="http://www.google.com/">Longclick me!</a></p>
Javascript 已经没问题了:
function longClickHandler(e){
e.preventDefault();
$("body").append("<p>You longclicked. Nice!</p>");
}
$("p a").longclick(250, longClickHandler);
解决方法是将这些规则添加到样式表中:
body { -webkit-touch-callout: none !important; }
a { -webkit-user-select: none !important; }
禁用上下文菜单example http://jsfiddle.net/z9ZNU/53/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)