使用jQuery跟踪flash电影(对象/嵌入)的单击

Dav*_*vid 8 flash jquery click capture

我正在制作一个动态横幅系统,可以处理img横幅,以及使用object/embed完成的flash横幅.整个网站大量使用jQuery,包括处理"点击"事件.

在跟踪图像本身的点击时,这显然不是问题(我跟踪父DIV标签上的点击.但是,当广告是SWF时,它会失败,因为我怀疑它会.

是否有一个jQuery解决方法,允许我用DOM捕获Flash元素的单击?

web*_*res 10

我知道这是很久以前发布的,已经回答了,但我只想为未来的网站访问者添加一个更简单的解决方案.虽然嵌入的SWF文件将吞下onclick事件,但它不会吞下onmousedown事件.诀窍是在param标签和embed标签中将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>
Run Code Online (Sandbox Code Playgroud)

您可以使用jQuery绑定到mousedown事件,如下所示:

$('#layer1').mousedown(function() {
  alert('mouse down');
});
Run Code Online (Sandbox Code Playgroud)


Ama*_*osh 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.
}
Run Code Online (Sandbox Code Playgroud)