在我的 actionscript 文件中我有:
ExternalInterface.addCallback("loadHotspotsXMLCallback", hotspotsXMLCallback);
在 html 中我有:
<embed width="100%" height="100%" align="middle" type="application/x-shockwave-flash" salign="" allowscriptaccess="sameDomain" allowfullscreen="false" menu="false" name="FloorplanViewer" bgcolor="#FFFFFF" id="FloorplanViewer" devicefont="false" wmode="transparent" scale="showall" loop="false" play="true" pluginspage="http://www.adobe.com/go/getflashplayer" quality="high" flashvars="..." src="swf/FloorplanViewer_V110228b.swf">
在 JS 中我有:
$("FloorplanViewer")["loadHotspotsXMLCallback"](response.responseText);
我也试过:
window["loadHotspotsXMLCallback"](response.responseText)
和
document["loadHotspotsXMLCallback"](response.responseText)
但是 JS 在 IE 中有 DNW 部分,在 FF 和 GC 中也是如此。 有人知道为什么吗?
I've read this documentation on using ExternalInterface ,虽然我的问题出现在 IE8 上,但我尝试了那里提到的以下建议的 IE7 解决方案:
- 确保添加的外部回调名称与上面的 actionscript 代码的内部回调名称不同。
- 将添加回调的代码延迟 500 毫秒
但是这些改变没有效果。
最佳答案
我建议从我的文章 http://work.arounds.org/issue/10/calling-flash-functions-from-javascript/ 中尽可能简单地尝试它
<object id="flash" data="file.swf" width="420" height="300"></object>
<script>
onload = function() {
var flash = document.getElementById('flash');
flash.NextFrame();
}
</script>
首先尝试将您的 embed
转换为 object
,然后在窗口加载后通过 ID 简单地获取元素。还可以尝试 alert( 'functionName' in flash );
以确保该方法存在。
关于javascript - 闪存和 IE : “Object doesn’ t support this property or method” error (using ExternalInterface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5149527/