2009-11-24 3 views
8

저는 img 배너 및 object/embed로 수행 된 플래시 배너를 처리 할 수있는 동적 배너 시스템을 만들고 있습니다. 전체 사이트는 '클릭'이벤트 처리를 포함하여 jQuery를 많이 사용합니다.jQuery로 플래시 무비 (오브젝트/임베드)를 클릭하십시오.

이것은 이미지 자체의 클릭 수를 추적 할 때 문제가되지 않지만 부모 DIV 태그의 클릭 수를 추적합니다. 그러나 광고가 SWF 일 때 의심됩니다.

인가가 나를 DOM과 플래시 요소에 클릭을 캡처 할 수 있도록 해주는 jQuery를 해결? 당신은 SWF의 소스에 액세스 할 수있는 경우

답변

3

, 당신이 포함 된 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 태그에서 transparent로 설정하는 것입니다.

<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> 

대신과 같이 MouseDown 이벤트에 바인딩 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,이 밖에 다른 사람 도움이되기를 바랍니다.