4

この問題は、Firefox が FF17、MAC、OSX 10.8.2 に自動的に更新された後に見つかりました。
提案やヒントはありますか?

問題:
javascript preventDefault(); を使用しています。および stopPropagation(); マウス ホイールによるデフォルトのスクロール イベントをキャンセルするには、問題なく動作します。しかし、フラッシュ オブジェクトの上にマウスを置いてマウス ホイールでスクロールすると、これは機能しません。

確かに、マウスホイールで制御できるフラッシュのパネルがあります。Flash オブジェクトは HTML ドキュメントの中央に埋め込まれています。Flash コンテンツを表示するには、ブラウザーを下にスクロールする必要があります。Flash コンテンツにフォーカスしてマウス ホイールでスクロールすると、ブラウザもスクロールして Flash コンテンツが見えなくなります。

問題を再現します。
1. 単純な空白の Flash オブジェクトを html の一番下に配置します。ブラウザでフラッシュ オブジェクトを表示するには、下にスクロールする必要があることを確認してください。

  1. 説明を簡単にするために、この 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 を返します。}

  2. フラッシュ オブジェクト上でマウスを動かし、スクロール ホイールを使用すると、ブラウザもスクロールしていることがわかります。

期待される結果:
上記のスクリプトにより、マウス ホイールはフラッシュ オブジェクトのみを制御し、ブラウザは制御しません。

4

3 に答える 3

1

Flash オブジェクトに注文プロセス全体が含まれているサイトに出くわしましたが、そのオブジェクトはラップトップの画面に収まらない固定サイズです。Flash オブジェクト オブジェクト内外、つまりページ全体のスクロールが無効になっています。マウス ポインターを右端に移動し、マウス ホイールの代わりにブラウザーのスクロール バーを使用しなければならない、非常に腹立たしいユーザー エクスペリエンスです。このサイト " https://internetorder.dominos.com.au/estore/ " (メイン ページ以降のすべてのページ) はそのように動作しますか。私は決してこれを支持しているわけではありません。

于 2013-05-12T16:53:40.683 に答える
0

デフォルトのマウス ホイールの動作をオーバーライドするには、javascript を使用する必要があります。最初のリンクにはさまざまなブラウザーでの例がたくさんありますが、2 番目の例に基づいて最新の IE で実装する方がうまくいきました。

http://www.stoimen.com/blog/2009/07/01/javascript-disable-mouse-wheel/

http://solidlystate.com/scripting/javascript-disable-mouse-wheel/

しかし、なぜこれが必要なのかよくわかりません。アプリケーションを画面と同じサイズにフラッシュし、内部コンテンツをスケーリングすると、ページをスクロールする方法がありません。フラッシュの幅と高さを 100% に設定するだけです

于 2013-01-04T21:21:59.723 に答える
0

すべてを処理する小さなライブラリを作成しました。(私がテストした限りでは)デフォルトのフラッシュ プレーヤー プラグイン、Pepper フラッシュ、および MAC-OS で完璧に動作します。また、.js ファイルを HTML フォルダーに追加する必要はありません。

GIhub リポジトリ

于 2013-07-29T08:09:42.093 に答える