как отменить e.preventDefault () от тела? - PullRequest
0 голосов
/ 20 августа 2010

У меня есть это:

function dontMove(event) {
    // Prevent page from elastic scrolling
    event.preventDefault();
}

&

<body ontouchmove="dontMove(event);">

Это предотвращает перетаскивание на ipad и не позволяет отображать серый фон, который имеет ipad, когда вы перетаскиваете целую страницу вокруг.

Я видел на другом веб-сайте, что можно изменить это в другом div, чтобы div снова полностью перетаскивался.

Кто-нибудь знает, как повернуть его вспять?

Я также пытался использовать это, чтобы предотвратить это (в документе .ready):

document.ontouchmove = function(e){
    e.preventDefault();
}

и это, чтобы включить его:

function doTouchMove(state) {
    document.ontouchmove = function(e){
    return state;
    }
}

Тогда я положил это, чтобы активировать его.

<img ontouchmove="doTouchMove(state);" src="../jpeg/pages/01.jpg" class="touch"/>

Это не похоже на работу Что-то не так с этим? Или любой другой способ, который мог бы работать?

Ответы [ 4 ]

2 голосов
/ 29 июля 2011

Именно поэтому bubbles немного лучше (по крайней мере, на мой взгляд).

bubbles является кросс-браузерным, поэтому вы должны иметь возможность заменить.

e.preventDefault()

с

e.bubbles = false;

и последним в вашем коде, вы можете потенциально сбросить bubbles на true.

Если вышеупомянутое не вариант, просто проигнорируйте.: D

Альтернатива (если вы просто работаете с iPad) - просто изменить работу DOM.

document.addEventListener('click', function(){}, true );

Это заставит событие работать в другом направлении.

Document click execute
                     |
                     |
                     v
                  Element click execute
0 голосов
/ 19 мая 2014

Вы можете решить это, предотвратив событие, только если оно исходит от тела:

document.ontouchmove = function(event){
  if(event.target.tagName == "BODY"){
    event.preventDefault();
  }
}
0 голосов
/ 11 октября 2012

Мне удалось решить с помощью

$('#form1').unbind('submit').submit();
0 голосов
/ 29 июля 2011

попробуйте это сообщение, HTML с event.preventDefault и удалите ontouchmove из тега body.

Моя выглядит так

<script>
    // Get touch move enevt from IOS
    document.ontouchmove = function (event) {
        if (!event.elementIsEnabled)
            event.preventDefault();
    };

    // Get touch move enevt from IOS
    function enableOnTouchMove(event) {
      event.elementIsEnabled = true;
    };
</script>

затем включите ontouchmove для каждого тега, который вы хотите.т.е.:

<div ontouchmove="enableOnTouchMove(event)" id="listing">
...