Flash对象上的javascript onclick事件
-
22-07-2019 - |
题
我在一个 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
- 设置参数
wmode
到transparent
. 。这允许包含 flash 的对象接收 javascriptonclick
. - 使用
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');"> </div>
</div>
上的对象标记做onclick事件。 (对象标签支持鼠标事件)。然后抓住通过DOM父DIV。
<param name="wmode" value="transparent" />
这是我的溶液。好了,我实现它在AC_RunActiveContent.js在PARAMS:
'wmode', 'transparent',
尼斯!!!
我有这个问题时,我试图使自动动态放置横幅。如果SWF被设置好的为“opaquecolor”模式,那么我没有点击acceptables - 我不得不使用opaquecolor因为一些横幅用的网站颜色搞砸了。我找到了解决办法,是设置SWF到“透明”模式,在一个
Example:
<a href="www.mysite.com">
<div id="SWF_file_container" style="width:100px; height:40px; z-index:10;">
<object> .... </object> (adding SWF in TRANSPARENT MODE)
</div>
<div id="opaquecolor_of_swf" style="width:100px; height:40px; z-index:2; background-color:#ff0000;"></div>
</a>