iPad で Web サイトを動作させようとしていますが、動作していないのは onmousemove メソッドだけです。ユーザーが画面上で指をパンしたときに onmousemove がトリガーされるようにします。
質問する
732 次
1 に答える
1
mousemove
タッチ対応デバイスのイベントに相当するのはtouchmove
イベントです。
したがって、次のようにイベントをバインドできます。
var addEvent = (function () {
var tester, allHandlers, attachGenerator, addFunc, removeFunc;
tester = document.createElement("div");
allHandlers = [];
attachGenerator = function (el, cb) {
var ret;
ret = function (e) {
e = e || window.event;
cb.call(el, e);
};
return ret;
};
if (tester.addEventListener) {
addFunc = function (element, eventName, callback) {
allHandlers.push({
element: element,
eventName: eventName,
callback: callback
});
element.addEventListener(eventName, callback, false);
};
removeFunc = function (element, eventName, callback) {
element.removeEventListener(eventName, callback);
};
} else if (tester.attachEvent) {
addFunc = function (element, eventName, callback) {
var finalCallback;
finalCallback = attachGenerator(element, callback);
allHandlers.push({
element: element,
eventName: eventName,
callback: finalCallback
});
element.attachEvent("on" + eventName, finalCallback);
};
removeFunc = function (element, eventName, callback) {
element.detachEvent("on" + eventName, callback);
};
}
addFunc(window, "unload", function () {
var i, j, cur;
// Don't remove this unload handler
for (i = 1, j = allHandlers.length; i < j; i++) {
cur = allHandlers[i];
removeFunc(cur.element, cur.eventName, cur.callback);
}
});
return addFunc;
}());
function loadHandler() {
addEvent(document, "touchmove", touchmoveHandler);
}
function touchmoveHandler() {
// this callback should fire for every pixel (or whatever unit they may use) the touch moves
}
addEvent(window, "load", loadHandler);
(このaddEvent
関数は、古い IE での作業を支援するための単なる一般的なイベント バインディング関数です...touch
イベントにバインドしている場合はおそらく不要です)
私の元の汎用addEvent
関数は完全ではないことに注意してください: http://www.quirksmode.org/blog/archives/2005/08/addevent_consid.htmlウィンドウのイベントが発生したときにすべてのハンドラーを削除するためにも使用する必要があります。this
attachEvent
unload
参考文献:
于 2013-07-09T04:24:45.687 に答える