この問題は、Firefox が FF17、MAC、OSX 10.8.2 に自動的に更新された後に見つかりました。
提案やヒントはありますか?
問題:
javascript preventDefault(); を使用しています。および stopPropagation(); マウス ホイールによるデフォルトのスクロール イベントをキャンセルするには、問題なく動作します。しかし、フラッシュ オブジェクトの上にマウスを置いてマウス ホイールでスクロールすると、これは機能しません。
確かに、マウスホイールで制御できるフラッシュのパネルがあります。Flash オブジェクトは HTML ドキュメントの中央に埋め込まれています。Flash コンテンツを表示するには、ブラウザーを下にスクロールする必要があります。Flash コンテンツにフォーカスしてマウス ホイールでスクロールすると、ブラウザもスクロールして Flash コンテンツが見えなくなります。
問題を再現します。
1. 単純な空白の Flash オブジェクトを html の一番下に配置します。ブラウザでフラッシュ オブジェクトを表示するには、下にスクロールする必要があることを確認してください。
説明を簡単にするために、この JavaScript を使用して、ページ上のすべてのマウス ホイール アクティビティを停止できます: (必要に応じて、"スペースバー" を押して、html の一番下にあるフラッシュ オブジェクトにアクセスしてください)。
window.addEventListener('DOMMouseScroll', wheel, false); window.addEventListener('mousewheel', wheel, false);
window.addEventListener('MozMousePixelScroll', wheel, false); window.addEventListener('wheel', wheel, false);
関数 cancelEvent(e) { e = e ? e : window.event; if (e.stopPropagation)e.stopPropagation(); if (e.preventDefault)e.preventDefault(); e.cancelBubble = true; e.cancel = true; e.returnValue = false; false を返します。}フラッシュ オブジェクト上でマウスを動かし、スクロール ホイールを使用すると、ブラウザもスクロールしていることがわかります。
期待される結果:
上記のスクリプトにより、マウス ホイールはフラッシュ オブジェクトのみを制御し、ブラウザは制御しません。