8

オブジェクト/埋め込みで行われるフラッシュ バナーと同様に、img バナーを処理できる動的バナー システムを作成しています。「クリック」イベントの処理を含め、サイト全体で jQuery を多用しています。

画像自体のクリックを追跡する場合、これは明らかに問題ではありません (私は親 DIV タグのクリックを追跡します。ただし、広告が SWF の場合は失敗すると思います。

DOM を使用して Flash 要素のクリックをキャプチャできるようにする jQuery の回避策はありますか?

4

3 に答える 3

10

これはずっと前に投稿され、すでに回答されていることは知っていますが、将来のサイト訪問者のためにもっと簡単なソリューションを追加したかっただけです. 埋め込まれた SWF ファイルは onclick イベントを飲み込みますが、onmousedown イベントは飲み込みません。秘訣は、param タグと埋め込みタグで wmode を透明に設定することです。

<div id="layer1" onmousedown="alert('mouse down')"> 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://fpdownload.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" 
width="799" height="741" id="myMovieName">
<param name="movie" value="_data.swf" /> 
<param name="quality" value="high" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="transparent" />
<embed src="_data.swf" quality=high bgcolor=#FFFFFF width="799" height="741" 
name="myMovieName" type="application/x-shockwave-flash" 
play="true" loop="true" wmode="transparent"
pluginspage="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</embed>
</object>
</div>

jQuery を使用して、代わりに次のように mousedown イベントにバインドできます。

$('#layer1').mousedown(function() {
  alert('mouse down');
});
于 2011-03-03T16:44:45.257 に答える
3

SWFのソースにアクセスできる場合は、を使用ExternalInterfaceして、含まれているhtmlページと通信できます。

//inside the flash movie:
stage.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent):void
{
   ExternalInterface.call("handleFlashClick", [parameters to the method]);
}

//javascript in the containing html page
function handleFlashClick()
{
  //call the jQuery method here.
}
于 2009-11-24T10:56:53.750 に答える
2

以下を使用して、webwiresの回答を取得し、オブジェクトのクリックを機能させることができました。

// Podcast player GA event tracking
var podcast_player = $('object.podcast-player');
if( podcast_player.length > 0 )
{
    podcast_player.live('mousedown',function(){
        _gaq.push(['_trackEvent', 'Podcast', 'Play']);
    });
}

これが他の誰かに役立つことを願っています、ありがとうwebwires .

于 2011-07-19T14:16:31.827 に答える