2

Flash オブジェクトと、その上に絶対配置された HTML 要素を含む HTML ドキュメントがあります。HTML 要素のopacityCSS プロパティを 1 未満の任意の値に設定すると、(実際にカバーされている) Flash オブジェクトがマウス イベントを受け取ります。この問題は、純粋な HTML 要素では再現できません。さらに、Flash はホバーイベントしか受信しないため、レイヤーの下をクリックすることはできません。

問題のデモンストレーションをオンラインにしました。

Mac と Windows の両方で、Firefox 3.6、Safari 4.0、および Chrome 5.0 でこの動作が発生します。Flash プラグイン バージョン 10 がインストールされています。

それはバグですか、それとも通常予想される動作ですか? 後者の場合、半透明のレイヤーで覆われているときに Flash がイベントを受信しないようにするにはどうすればよいですか?

4

5 に答える 5

1

非常に興味深い問題です。広範囲に検索したところ、これに対する Actionscript ソリューションしか見つかりませんでした。このページをローカルで再現し、フラッシュとパネルの間にレンガの壁以外のすべてを配置しようとしましたが、フラッシュは常にマウス イベントに応答します。残念ながら、私が持っている唯一の解決策は、パネルが表示されたら、フラッシュを画像に移動/置き換えることです.マップ全体をカバーするパネルが必要になることを願っています. フラッシュの一部をスライドするナビゲーションが少しあるだけの場合、それを画像に置き換えると回避できる可能性があります. jquery を使用したコードを次に示します。これは、私が考えることができる最高のものですが、パネルから出たときに少しまばたきします。

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $(".panel").mouseover(function() {
        $("#google-visualization-geomap-0").css({'position' : 'absolute', 'left' : '-999em'});
    });
    $(".panel").mouseout(function() {
        $("#google-visualization-geomap-0").css({'position' : 'static', 'left' : '0'});
    });
});
</script>

これが少し役立つことを願っています。

于 2010-04-02T21:30:12.010 に答える
0

グラビティワン、

プログラムしたフラッシュ ピースと重なるドロップ ダウン メニューで同じ問題が発生しています。ActionScript ソリューションをいくつか見つけたようですね。任意の入力をいただければ幸いです。

私はリスナーをテストしましたEvent.MOUSE_LEAVEが、残念ながらマウスが swf の上にある場合と、メニューの上にある場合とを区別しません。

ありがとう!


アップデート:

そこで、ロールオーバー効果が実行される前に、Flash ピースに javascript 変数を強制的にチェックさせることで、この問題を解決しました。

swf/js 通信の詳細については、リンク テキストを参照してください。

または、私がそれをどのように適用したかを確認するには、以下をご覧ください。

アクションスクリプト:

import flash.external.ExternalInterface;
private var navOver:Boolean;
private function onPackOver(event:MouseEvent){
    //Establish if Nav is on by grabbing js variable.
    navOver = ExternalInterface.call("navOnStatus");
    if (!navOver){
    // mouse over effects
    }
}

Javascript:

//navOn Variable is changed to true when mouse if over the nav, and false when it is not;
var navOn = false;
function navOnStatus(){
return navOn;
}
于 2010-04-15T21:20:01.153 に答える
0

Event.MOUSE_LEAVEステージで聞いてください。これは、マウスがステージを離れるたびに発生します (別の html 要素にカーソルを合わせると、これがトリガーされます)。その後、ホバー状態であってはならないものからホバー状態を削除できます。

于 2010-04-01T15:51:57.837 に答える
0

多分それはブラウザのバグと見なされるべきです。

Flash Player 10.1 r53 を搭載した Google Chrome 5.0.375.99 および Apple Safari 5.0 (6533.16) に関しては、この問題に直面することはもうありません。期待どおりの動作が得られました。つまり、半透明レイヤーの背後にある Flash オブジェクトがマウス イベントに応答しません。

于 2010-07-21T10:11:06.363 に答える
-1

あなたのデモからわかることから、Flash オブジェクトは、マウスが左側のパネルに移動したときにホバー イベントのみを保持しています。たとえば、up は引き続きマウスを追跡します。この動作は、マウスがフラッシュ オブジェクトから適切に「離れていない」ことが原因のようです。よろしければ、左側のパネルで地図が部分的に隠れているのはなぜですか?

于 2010-03-27T22:56:39.913 に答える