Flash& IE:“对象不支持此属性或方法”错误(使用ExternalInterface)

时间:2011-03-01 01:21:32

标签: javascript actionscript-3 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)

但IE中的JS部分DNW,它在FF和GC中。 有人知道为什么吗?

I've read this documentation on using ExternalInterface,虽然我的问题出现在IE8上,但我尝试了以下提到的IE7解决方案:

  • 确保添加的外部回调名称与上面的actionscript代码的内部回调名称不同。
  • 延迟将回调添加500毫秒的代码

但这些变化没有效果。

3 个答案:

答案 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等解决类似的问题..

有些事情有所帮助,按优先顺序排列:

  1. 延迟CALLS回调的代码

  2. 如果您使用的SWF超过1个,请尽量不要附加所有同时添加回调/等的SWF文件

  3. 两个或多个并发javascript调用(addCallbacks / ExternalInterface.call / etcs)通常会导致某些IE失败。

    如果你需要做很多javascript调用,可能就是实现一个“Javascript调用堆栈”的情况,它会稍微延迟一次调用每个操作。

    真的希望有所帮助

    我真的很难与IE /跨浏览器兼容,在同一页面中需要控制来自/到javascript的超过1个swf文件