防止浏览器弹出taphold事件

时间:2011-05-02 15:45:07

标签: jquery jquery-mobile preventdefault

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

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

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

6 个答案:

答案 0 :(得分:10)

使用css:

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

不显示标准对话框

答案 1 :(得分:2)

问题在于,您绑定的'taphold'事件是由jQuery Mobile触发的自定义事件,因此它不会触发浏览器的默认行为。

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

答案 2 :(得分:1)

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

$(function(){

    document.oncontextmenu = function() {return false;};

    $(document).mousedown(function(e){

        if ( e.button == 2 )
        { 
            alert('Right mouse button!'); 
            return false; 
        }

        return true;
    });
});

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

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

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