如何从身体反转e.preventDefault()?

时间:2010-08-20 19:20:47

标签: javascript jquery ipad drag

我有这个:

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

这似乎不起作用 这有什么不对吗? 或任何其他可行的方式?

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

尝试这篇帖子,HTML with event.preventDefault并从正文标记中删除 ontouchmove

我看起来像这样

<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 :(得分:0)

我设法用

解决了这个问题
$('#form1').unbind('submit').submit();

答案 3 :(得分:0)

您可以通过仅在来自身体时阻止事件来解决它:

document.ontouchmove = function(event){
  if(event.target.tagName == "BODY"){
    event.preventDefault();
  }
}