在我的动作文件中,我有:
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)
但IE中的JS部分DNW,它在FF和GC中。 有人知道为什么吗?
I've read this documentation on using ExternalInterface,虽然我的问题出现在IE8上,但我尝试了以下提到的IE7解决方案:
但这些变化没有效果。
答案 0 :(得分:3)
我建议在我的文章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转换一个简单的get元素。同时尝试alert( 'functionName' in flash );
以确保该方法存在。
答案 1 :(得分:1)
我会尝试这样的事情:
var fpViewer = document["FloorplanViewer'] || window["FloorplanViewer"];
fpViewer.loadHotspotsXMLCallback(response.responseText);
此外,我忘记了现在将Flash插入页面的最佳做法。但我肯定用embed
元素包装object
元素,以确保最大的跨浏览器兼容性。
富
答案 2 :(得分:0)
我很难用IE 6,7,8等解决类似的问题..
有些事情有所帮助,按优先顺序排列:
延迟CALLS回调的代码
如果您使用的SWF超过1个,请尽量不要附加所有同时添加回调/等的SWF文件
两个或多个并发javascript调用(addCallbacks / ExternalInterface.call / etcs)通常会导致某些IE失败。
如果你需要做很多javascript调用,可能就是实现一个“Javascript调用堆栈”的情况,它会稍微延迟一次调用每个操作。
我真的很难与IE /跨浏览器兼容,在同一页面中需要控制来自/到javascript的超过1个swf文件