2010-08-20 10 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從身體標記。

我的是這樣

<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; 

,然後在你的代碼後,你可能會重置bubblestrue

如果上述不是一個選項,那麼就忽略。 :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(); 
    } 
}