2010-08-20 2 views
0

у меня есть это:как отменить e.preventDefault() от тела?

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

&

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

Это, на Ipad, останавливает его от перетаскиваемого и не допускает, что серый фон Ipad имеет при перетаскивании целой страницы вокруг объявиться.

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

Кто-нибудь знает, как отменить его?

Я также попытался использовать это, чтобы предотвратить его (в document.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"/> 

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

ответ

0

попробуйте этот пост, HTML with event.preventDefault и удалите ontouchmove c телом бирка.

Mine выглядит следующим образом

<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"> 
2

Именно поэтому 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

мне удалось решить с

$('#form1').unbind('submit').submit(); 
0

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

document.ontouchmove = function(event){ 
    if(event.target.tagName == "BODY"){ 
    event.preventDefault(); 
    } 
} 
Смежные вопросы