私があなたの質問を理解したところで、上記のコードをthe code snippet provided by Ross Boucher on Posterousと組み合わせようとしました。 touchmove
を無効にすると、mousemove
が彼のサンプルで動作するようにするシムも無効になっているため、これらの2つのスニペットを連続して組み合わせようとすると機能しません。
This question and its answersあなたの問題に対して実行可能な解決策を示します。 the sameから、
elementYouWantToScroll.ontouchmove = function(e) {
e.stopPropagation();
};
またはこの1:
This snippet,古いスクロール動作を無効にします。この2つのスニペット彼らはあなたの問題を解決するかどうかを確認するために試してみてください
document.ontouchmove = function(e) {
var target = e.currentTarget;
while(target) {
if(checkIfElementShouldScroll(target))
return;
target = target.parentNode;
}
e.preventDefault();
};
次に、ドロップin the code on Posterous:
function touchHandler(event)
{
var touches = event.changedTouches,
first = touches[0],
type = "";
switch(event.type)
{
case "touchstart": type = "mousedown"; break;
case "touchmove": type="mousemove"; break;
case "touchend": type="mouseup"; break;
default: return;
}
//initMouseEvent(type, canBubble, cancelable, view, clickCount,
// screenX, screenY, clientX, clientY, ctrlKey,
// altKey, shiftKey, metaKey, button, relatedTarget);
var simulatedEvent = document.createEvent("MouseEvent");
simulatedEvent.initMouseEvent(type, true, true, window, 1,
first.screenX, first.screenY,
first.clientX, first.clientY, false,
false, false, false, 0/*left*/, null);
first.target.dispatchEvent(simulatedEvent);
event.preventDefault();
}
それはあなたのためにそれを行うべきです。そうでない場合は、モバイルSafariで動作していないものがあります。
touchHandlerはどのように配線されていますか? – blaster