2009-11-24 10 views
8

私はimgバナーやobject/embedで行われたバナーを扱うことができるダイナミックバナーシステムを作っています。サイト全体では、「クリック」イベントを処理するなど、jQueryを多用しています。jQueryでフラッシュムービー(オブジェクト/埋め込み)をクリックしてください

これは明らかに、画像自体のクリックをトラッキングするときに問題になることはありません(私は親DIVタグのクリックをトラッキングしますが、広告がSWFの場合は疑わしいので失敗します)。

は私がDOMとフラッシュ要素のクリックをキャプチャできるようになるjQueryの回避策はありますか?

答えて

3

あなたはSWFのソースへのアクセス権を持っている場合は、HTMLページと通信するためにExternalInterfaceを使用することができます。

//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. 
} 
+1

ソースには全くアクセスできません。お客様が独自のSWFバナーをシステムにアップロードできるバナーシステムです。 これは、クライアントバナーSWFをムービーとしてロードする「社内」バナーをリンクし、SWFファイルに自分のSWFコントロールを与えながら、そのままクライアントSWFファイルにアップロードされますか? – David

+0

これは良いアイデアのように思えます。 – Amarghosh

+0

ご協力いただきありがとうございます! :) – David

10

これはずっと前に投稿され、すでに回答済みであることは分かっていますが、今後のサイト訪問者にとってはずっと簡単なソリューションを追加したかっただけです。埋め込みSWFファイルはonclickイベントを飲み込むが、onmousedownイベントは飲み込まない。このトリックでは、wmodeをparamタグとembedタグで透明に設定しています。

<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を使用することができます。

$('#layer1').mousedown(function() { 
    alert('mouse down'); 
}); 
+0

ダブルクリックで同じことをする方法はありますか? – Osa

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、そこに他の誰かに役立ちます願っています。

関連する問題