モバイル対応の Web サイト (ここでは iPhone を使用) で iScroll を使用して、div 内をスクロールしています。
この div には、次のような固定高さの iframe があります。
<body>
<div id="iscroller">
<iframe id="theIframe"></iframe>
Other stuff
</div>
</body>
今、div内でスクロールしている間、すべてが期待どおりに機能しますが、スクロールジェスチャが iframe で始まるとスクロールできません。
問題はここでかなりよく説明されています: https://github.com/cubiq/iscroll/issues/41
pointer-events:none
そのため、iframeに適用することで、その投稿の css 回避策を使用しました。
スクロールは完全に機能するようになりましたが、iframe のすべてのクリック/タッチ イベントがpointer-events: none
.
ので、私は考えました:
「わかりました。ユーザーがスクロールしている間、必要
pointer-events:none
です。ユーザーがスクロールしていない (代わりにクリックしている) 場合はpointer-events:auto
、クリック/タッチ イベントを通過させるために設定する必要があります。」
だから私はこれをしました:
CSS
#theIframe{pointer-events:none}
JavaScript
$("#theIframe").bind("touchstart", function(){
// Enable click before click is triggered
$(this).css("pointer-events", "auto");
});
$("#theIframe").bind("touchmove", function(){
// Disable click/touch events while scrolling
$(this).css("pointer-events", "none");
});
これを追加しても機能しません:
$("#theIframe").bind("touchend", function(){
// Re-enable click/touch events after releasing
$(this).css("pointer-events", "auto");
});
何をしても、スクロールが機能しないか、iframe 内のリンクをクリックしても機能しません。
うまくいきません。何か案は?