簡體   English   中英

如何從身體反向e.preventDefault()?

[英]how to reverse e.preventDefault() from the body?

我有這個:

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

這似乎不起作用,這有什么問題嗎? 或其他任何可行的方式?

這就是為什么bubbles要好一些的原因(至少在我看來)。

bubbles是跨瀏覽器的,因此您應該可以替換。

e.preventDefault()

e.bubbles = false;

然后在您的代碼的后面,您可能會將bubbles重置為true

如果以上都不是,請忽略。 :d

另一種選擇(如果您僅使用iPad的話)是顛倒DOM的工作方式。

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

這將迫使事件朝另一個方向進行。

Document click execute
                     |
                     |
                     v
                  Element click execute

我設法解決了

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

您可以通過僅在事件來自身體時才阻止事件來解決它:

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

試試這篇文章, 帶有event.preventDefault的HTML,並從body標簽中刪除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">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM