防止浏览器弹出taphold事件

在基于jquery-mobile的Web应用程序中,如何阻止默认浏览器菜单显示在“点击保持”…而不是我想显示自定义对话框页面..

下面提到的是我现在的代码..

$(".task_row").bind('taphold',function(event, ui){ event.preventDefault(); $("#slide_down_menu").trigger('click'); }); 

使用css:

 a { -webkit-touch-callout: none !important; } 

不显示标准对话框

问题是你绑定的’taphold’事件是由jQuery Mobile触发的自定义事件,因此它不是触发浏览器默认行为的同一事件。

如果您试图避免的默认菜单是允许您“打开”或“复制”该URL的默认菜单,那么一种解决方案是不使用标签。 如果你使用span或div,你可以绑定一个ontap函数来改变浏览器的位置,你的taphold事件不会被默认行为中断。

使用ontouchstart事件怎么样? 我很确定我已经用它来防止默认的iPad交互发生。

 $(".task_row").bind('touchstart', function(event, ui){ event.preventDefault(); $("#slide_down_menu").trigger('click'); }); 

你非常接近它。 正确的代码是:

 $('#ciytList li a ').bind('taphold', function(e) { e.preventDefault(); return false; } ); 

我刚刚取下链接并应用css使它看起来像一个并使用它

$.mobile.changePage( "#main", { transition: "slideup"} );

但我已经把它绑定到一个显示删除按钮的点击事件…没有更多的弹出菜单

我发现你必须禁用右键单击。

 $(function(){ document.oncontextmenu = function() {return false;}; $(document).mousedown(function(e){ if ( e.button == 2 ) { alert('Right mouse button!'); return false; } return true; }); });