2011-06-30 8 views
3

AndroidブラウザでレンダリングされたHTMLページのスクロールを防ぐ方法はありますか?以下は、Androidのブラウザでページのスクロールに影響を持っているように見えません。Androidブラウザでのスクロールの防止

var preventDefault = function(e) { 
    e.preventDefault(); 
    return false; 
}; 
document.addEventListener('touchmove',preventDefault,false); 
document.body.addEventListener('touchmove',preventDefault,true); 
window.addEventListener('touchmove',preventDefault,true); 

(私はオンとオフをバブリングしてみました。)

のAndroidのWebkitは "を作るようですが、私には見えますウィンドウはドキュメントと同じ長さになり、スクロールはドキュメント本体やDOMウィンドウオブジェクトではなく、ブラウザ自体で行われます。奇妙なのは、iOS上のWebkitとまったく同じですが、上記のコードはまだ動作しています。

答えて

5

私自身の質問に答える。

ontouchstartontouchmoveをキャプチャして抑制する必要があるという問題は、ブラウザのスクロールを停止するためにdocumentになりました。これはiOSでは明らかに違いますが、どちらのプラットフォームでも同じように機能します。

私はこのようなソートのルックスを使用して終了実際のコード:

「要素は」は、この場合にはどのようなものです
var preventDefault = function(e){ 
    e.preventDefault(); 
}; 
var touchstart = function(e) { 
    document.addEventListener('touchstart', preventDefault,false); 
    document.addEventListener('touchmove', preventDefault,false); 
    /*do other stuff*/ 
}; 
var touchend = function(e) { 
    document.removeEventListener('touchstart', preventDefault,false); 
    document.removeEventListener('touchmove', preventDefault,false); 
}; 

element.addEventListener('touchstart', touchstart, false); 
element.addEventListener('touchend', touchend, false); 
+0

? – Thys

+0

@MrThys、すみません。私は正直言ってそれが何であったのか覚えていないが、おそらく文書本体だと思うが、それは「div」だったかもしれない。これがこの問題に関連しているかどうかも覚えていませんが、イベントが衝突するのを防ぐために「クリック」ハンドラを適用する必要があることもわかりました。私は特定の 'div'を' onclick = "void(0)" 'で書き終えました。 – Andrew

関連する問題