次のコードを使用しています。
$jq191('html, body').on('DOMMouseScroll mousewheel touchmove', '.fancybox-overlay', function( e ){ e.preventDefault(); e.stopPropagation(); });
私も試しました:
$jq191('html, body').on('DOMMouseScroll mousewheel touchmove', function( e ){ e.preventDefault(); e.stopPropagation(); });
ただし、イベント ハンドラーは、Safari を使用した MacBook Air では決してトリガーされません。私は何が間違っているのか分かりません。html を設定すると、本文がオーバーフロー: 非表示になり、本文はスクロールしませんが、垂直スクロールバーを削除/追加するときにファンシー ボックスが本文のコンテンツをシフトすることは望ましくありません。ありがとう。
編集 ドキュメントのjqueryでは、 セレクターが省略されているかnullの場合、イベントハンドラーは直接または直接バインドされていると呼ばれます。ハンドラーは、選択した要素でイベントが発生するたびに呼び出されます。イベントが要素で直接発生するか、子孫 (内部) 要素から発生するかは関係ありません。
では、バブルアップされたイベントがファンシーボックスを本文までスクロールするのをなぜこれが防げないのでしょうか? (使用: $jq191('html, body').on('DOMMouseScroll mousewheel touchmove', function( e ){ e.preventDefault(); e.stopPropagation(); }); )
もう1つの奇妙なことは、オーバーレイをスクロールすると、デバッガーが開いているときにイベントで中断しますが、イベントで中断した直後に本体がスクロールされることです。おそらくバグです。
edit made a jsfiddle @ http://jsfiddle.net/Sa7AP/ピンクのボックス内でクロムとサファリをスクロールすると、ピンクのボックスの最後に到達してスクロールし続けると、背景もスクロールします。ファンシーボックス内をスクロールするときに背景のスクロールを防止しようとしています。