0

iBooks の div に preventDefault を適用して、ページをめくるためのタッチ/ドラッグ イベントが機能しない領域を作成しようとしています。これまでのところ、タッチ イベントを防止しようとしただけですが、機能していません。ここでの実装は完全に間違っている可能性があります。

var area = document.getElementById('area');
function touchStart(event) {
    event.preventDefault();
}
function touchMove(event) {
    event.preventDefault();
}
function touchEnd(event) {
    event.preventDefault();
}
function touchCancel(event) {
    event.preventDefault();
}

area.addEventListener("touchstart", touchStart, false);
area.addEventListener("touchmove", touchMove, false);
area.addEventListener("touchend", touchEnd, false);
area.addEventListener("touchcancel", touchCancel, false);

これがタッチイベントを妨げていない理由についてのヒントをいただければ幸いです。

4

2 に答える 2

2

私は同じ問題を抱えていました。なぜaddEventListener私にとってうまくいかなかったのかわかりませんが、うまくいきましbindた。

var events = 'click touchmove touchstart touchend touchcancel';
$('#area').bind(events, function(e) {
    e.preventDefault();
}
于 2014-01-24T17:58:07.280 に答える
-2

あなたは近くにいます。イベントを関数に渡すには、実際には無名関数を使用する必要があります。

複数の関数を作成することについても心配する必要はなく、無名関数の 1 行を呼び出すだけでよいと思います。

var area = document.getElementById('area');

area.addEventListener("touchstart", function(event) {event.preventDefault()}, false);
area.addEventListener("touchmove", function(event) {event.preventDefault()}, false);
area.addEventListener("touchend", function(event) {event.preventDefault()}, false);
area.addEventListener("touchcancel", function(event) {event.preventDefault()}, false);

イベントリスナーに関数を呼び出す方法を引き続き使用する場合は、次のようになります。

var area = document.getElementById('area');

function myTouchStart(myEvent) {
    myEvent.preventDefault();
}

area.addEventListener("touchstart", function(event) {myTouchStart(event)}, false);

イベントリスナーには、関数を呼び出すよりも匿名関数があるという考え方です。匿名関数を使用すると、イベント オブジェクトを宣言して、匿名関数に渡し、独自の関数に渡すことができます。

于 2012-05-08T21:59:33.487 に答える