35

1つのdiv内に1つの埋め込みフラッシュムービーがあり、メインdivに1つのjavascript onclickイベントハンドラーを配置しましたが、クリックをキャッチしていません。何が問題になっていますか?

コード:

   <div id="top-box-player" onclick="alert('Hi Bananas!');">
     <object width="400" height="300">
        <param name="movie" value="general.swf">
        <embed src="./swf/general.swf" width="400" height="300">
        </embed>
     </object>
   </div>
4

8 に答える 8

86

私はこれをhttp://progproblems.blogspot.com/2009/08/javascript-onclick-for-flash-embeded.htmlで見つけました

  1. パラメータwmodeをに設定しtransparentます。これにより、フラッシュを含むオブジェクトがjavascriptを受信できるようになりますonclick
  2. onmousedownのinstedを使用しonclickます。を使用しているにもかかわらずwmode transparent、一部のブラウザはまだを呼び出しonclickませんが、を呼び出しますonmousedown

コードは次のようになります。

<div onmousedown="clickBanner(1)">
<object>
<param name="movie" value="3.swf">
<param name="wmode" value="transparent" />
<embed wmode=transparent allowfullscreen="true" allowscriptaccess="always" src="3.swf"></embed>
</object>
</div>

それは私のニーズに合っています=)

于 2010-11-14T23:25:18.190 に答える
21

すべての swf は z オーダーが無限大であると考えるのが最善です。フラッシュが一番上にあり、それを止めるためにできることはほとんどありません。一方、SWF 自体のコードにアクセスできる場合、または別の SWF を使用して現在の SWF をロードできる場合は、いくつかの異なる Flash コマンドを使用して、ページの JavaScript に対処できます。 . (ExternalInterface が最善の策です)。

//This is what your AS code should look like:
import flash.external.ExternalInterface;
import flash.events.MouseEvent;

root.addEventListener( MouseEvent.CLICK, useExternal, true );

function useExternal( event:MouseEvent):void
{
    //swfClickFunction is defined in JavaScript
    ExternalInterface.call( "swfClickFunction" );
}

onclick の代わりに onmousedown を使用する別の代替ソリューションが、以下の Darwin によって提供されています。

于 2009-09-18T13:51:28.747 に答える
2

フラッシュは、ほぼ確実にクリックイベントをその親に伝播しません。フラッシュを書かないと何もできないと思います。

于 2009-09-18T13:33:55.857 に答える
2

フラッシュオブジェクトは常にクリックをキャッチし、自動的にそれを渡しません。その機能を構築する必要があります-フラッシュでonclickをキャッチし、JS-functionを呼び出します。

何を達成しようとしていますか?

于 2009-09-18T13:35:04.810 に答える
2

この簡単な解決策を試して、フラッシュをdivで覆い、クリックイベントを上部のdivに配置して、フラッシュがマウスをつかまないようにします。

<div style="position:absolute;top:209px;left:80px;z-index:500;" id="helpvideos"> 
<div style="float:left">
<fb:swf 
    swfbgcolor="FFFFFF"  
    swfsrc='<?php echo SITE_URL;?>swf/3_sidebar.swf'  
    width='600' height='670'
    wmode="transparent"
     />
</div>
<div style="width:600px;height:670px;position:absolute;float:left;z-index:6000;" onclick="document.getElementById('helpvideos').setStyle('display','none');">&nbsp;</div>
</div>
于 2011-02-22T06:02:31.073 に答える
1

object タグで onclick イベントを実行します。(obejct タグはマウス イベントをサポートします)。次に、DOM を介して親 div を取得します。

于 2010-10-25T06:21:14.203 に答える
1

自動化された動的配置バナーを作成しようとしたときに、その問題が発生しました。SWF が 'opaquecolor' モードに設定されていた場合、許容できるクリック数がありませんでした。一部のバナーが Web サイトの色で台無しになっていたため、opaquecolor を使用する必要がありました。私が見つけた解決策は、z-index:10 の <div> で SWF を「透明」モードに設定し、その下に SWF ファイルと同じサイズの新しい <div> を配置し、不透明色で塗りつぶすことです。 SWF。両方の div を <a> タグにします。それはうまくいきました。

Example:
    <a href="www.mysite.com">
    <div id="SWF_file_container" style="width:100px; height:40px; z-index:10;">
    <object> .... </object> (adding SWF in TRANSPARENT MODE)
    </div>
    <div id="opaquecolor_of_swf" style="width:100px; height:40px; z-index:2; background-color:#ff0000;"></div>
    </a>
于 2011-11-04T14:10:37.400 に答える
1
<param name="wmode" value="transparent" />

これが私にとっての解決策でした。さて、params で AC_RunActiveContent.js に実装しました。

'wmode', 'transparent',

良い!!!

于 2011-09-15T02:58:32.053 に答える