Запретить всплывающее окно браузера на событии - PullRequest
9 голосов
/ 02 мая 2011

В веб-приложении на основе jquery-mobile, как я могу предотвратить отображение меню браузера по умолчанию при «удержании касания» ... вместо этого я хочу показать пользовательскую диалоговую страницу ..

упомянутый ниже мой код на данный момент ..

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

Ответы [ 6 ]

10 голосов
/ 03 апреля 2012

используйте css:

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

, чтобы не показывать стандартный диалог

2 голосов
/ 15 декабря 2011

Проблема в том, что событие «taphold», с которым вы связываетесь, является настраиваемым событием, которое запускается jQuery Mobile, поэтому это не то же самое событие, которое вызывает поведение браузера по умолчанию.

Еслименю по умолчанию, которое вы пытаетесь избежать, это то, которое позволяет вам «открывать» или «копировать» URL, тогда одно из решений - не использовать тег <a>.Если вы используете span или div, вы можете привязать к нему функцию ontap, которая изменит местоположение браузера, и ваше событие taphold не будет прервано поведением по умолчанию.

1 голос
/ 16 марта 2012

Я обнаружил, что нужно отключить щелчок правой кнопкой мыши.

$(function(){

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

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

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

        return true;
    });
});
0 голосов
/ 17 января 2012

Я просто снял ссылку и применил css, чтобы она выглядела как единое, и использовал это

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

но я уже связал его с событием щелчка, которое показывает кнопку удаления ... больше нет всплывающего меню

0 голосов
/ 15 августа 2011

Вы были довольно близки с этим.Правильный код:

$('#ciytList li a ').bind('taphold', function(e) {
    e.preventDefault();
    return false;
} );
0 голосов
/ 10 июля 2011

А как насчет использования события ontouchstart?Я уверен, что использовал это, чтобы не допустить взаимодействия по умолчанию на iPad.

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