我在一个 div 中嵌入了一部 Flash 影片,我在主 div 中放置了一个 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>
有帮助吗?

解决方案

最好是认为所有SWF的的具有无穷大的z顺序。 Flash是在上面,很少有哪些可以做,以制止。在另一方面,如果你有机会到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" );
}

使用onmousedown事件代替的onclick的另一替代解决方案由以下达尔文提供。

其他提示

我发现这个在 http://progproblems.blogspot.com/2009/08/javascript-onclick-for-flash-embeded.html

  1. 设置参数 wmodetransparent. 。这允许包含 flash 的对象接收 javascript onclick.
  2. 使用 onmousedown 插入的 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>

它适合我的需要=)

在闪光灯几乎可以肯定不会传播click事件给它的父。没有什么可以做,除非你写的闪光灯,我想。

flash对象将总是赶上点击不会自动把它传递。你必须建立一个功能 - 闪光的onclick赶上并调用JS功能

什么是你要完成?

试试这个简单的解决方案覆盖DIV闪光灯,把click事件在上面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>

上的对象标记做onclick事件。 (对象标签支持鼠标事件)。然后抓住通过DOM父DIV。

<param name="wmode" value="transparent" />

这是我的溶液。好了,我实现它在AC_RunActiveContent.js在PARAMS:

'wmode', 'transparent',

尼斯!!!

我有这个问题时,我试图使自动动态放置横幅。如果SWF被设置好的为“opaquecolor”模式,那么我没有点击acceptables - 我不得不使用opaquecolor因为一些横幅用的网站颜色搞砸了。我找到了解决办法,是设置SWF到“透明”模式,在一个

scroll top