我有一个要显示的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>
提前感谢您的帮助!
答案 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
祝你好运!