flashObject'不仅仅是Firefox中的函数'错误

时间:2010-07-28 16:01:51

标签: javascript flash

我有一个要显示的flash图表页面。首先,我进行单独的AJAX调用以获取图表数据,然后在javascript中处理它并调用flash对象函数,如下所示:

var flashObj = YAHOO.util.Dom.get(chartContainer);
if (!YAHOO.env.ua.ie) {
    flashObj = flashObj.getElementsByTagName("embed")[0];
}
flashObj.SetSettingOption(dataXml.xml);
flashObj.SetAndParseData(dataXml.xml);
flashObj.Draw();

然而,在Firefox中我得到错误“flashObj.SetSettingOption不是函数”。我在IE8中没遇到这个。这是因为flash对象没有完全加载吗?但随后访问该页面时,应缓存flash对象,但会出现相同的错误。

编辑:这里也是html的一部分

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="MyChart" width="760"
    height="455" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
    <param name="movie" value="../flash/MyChart.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#ffffff" />
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="wmode" value="transparent" />
    <embed src="../flash/MyChart.swf" quality="high" bgcolor="#ffffff" width="760"
        wmode="transparent" height="455" align="middle" play="true" loop="false"
        allowscriptaccess="sameDomain" type="application/x-shockwave-flash" 
        pluginspage="http://www.adobe.com/go/getflashplayer">
    </embed>
 </object>

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

  

这是因为flash对象没有完全加载吗?

是的,这经常发生在Flash上​​。

  

但是随后访问该页面时,应该缓存flash对象,但会出现相同的错误。

可能不是。 flash对象需要设置其外部接口。无论.swf文件本身是否被缓存,这都需要一些时间。

通常可以通过在ActionScript中使用回调函数来解决此问题,例如

ExternalInterface.call('flashLoaded');

或类似。

答案 1 :(得分:1)

尝试使用“document”而不是“flashObj”,如下所示:

if (!YAHOO.env.ua.ie) {
    flashObj = document.getElementsByTagName("embed")[0];
}

如果它不起作用,那么您可以尝试仅对Firefox使用document.embeds [“YOUR_FLASH_OBJECT_ID_HERE”],如下所示:

if (!YAHOO.env.ua.ie) {
    flashObj = document.embeds.YOUR_FLASH_OBJECT_ID_HERE;
}

请查看此文档,它可能会对您有所帮助:Referencing Flash Movie

祝你好运!