【发布时间】:2010-10-25 14:08:22
【问题描述】:
我很难让 ExternalInterface 在 Firefox 上工作。我正在尝试从 javascript 调用 AS3 函数。 SWF 设置了正确的回调,并且在 IE 中运行。
我正在使用 AC_RunActiveContent.js 将 swf 嵌入到我的页面中。但是,我已经对其进行了修改,以将 ID 添加到对象/嵌入标签中。下面是分别为 IE 和 Firefox 生成的 object 和 embed 标签。
<object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="400" height="400" align="middle" id="jpeg_encoder2" name="jpeg_encoder3" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" >
<param name="movie" value="/jpeg_encoder/jpeg_encoder3.swf" />
<param name="quality" value="high" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="scale" value="showall" />
<param name="wmode" value="window" />
<param name="devicefont" value="false" />
<param name="bgcolor" value="#ffffff" />
<param name="menu" value="false" />
<param name="allowFullScreen" value="false" />
<param name="allowScriptAccess" value="always" />
</object>
<embed
width="400"
height="400"
src="/jpeg_encoder/jpeg_encoder3.swf"
quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer"
align="middle"
play="true"
loop="true"
scale="showall"
wmode="window"
devicefont="false"
id="jpeg_encoder2"
bgcolor="#ffffff"
name="jpeg_encoder3"
menu="false"
allowFullScreen="false"
allowScriptAccess="always"
type="application/x-shockwave-flash" >
</embed>
我是这样调用函数的……
<script>
try {
document.getElementById('jpeg_encoder2').processImage(z);
} catch (e) { alert(e.message); }
</script>
在 Firefox 中,我收到一条错误消息“document.getElementById("jpeg_encoder2").processImage is not a function”
有什么想法吗?
【问题讨论】:
-
也许你正在快速调用 processImage 函数。确保已加载 SWF 文件。将 OBJECT/EMBED 元素插入文档树后,浏览器需要一些时间来请求 SWF 文件。如果不是这样,请提供更多代码。
-
该函数不会被调用 onLoad... 它稍后会根据用户交互发生。我已确保所有内容都已完全加载,但仍然存在同样的问题。
-
刚刚使用我的 SWF 文件测试了您的代码(EMBED 标记)。它运作良好。请显示更多代码或检查 Firefox 和 IE 中的 Flash 播放器的版本。检查 getElementById 是否返回正确的元素。没有其他想法可能导致此问题。
标签: javascript flash actionscript-3 externalinterface