I Love China

技术·人生

技术服务生活
繁體
4月 29th, 2007

在<form>标签内无法正常使用ExternalInterface[翻译]

原文地址http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=kb400730
在IE浏览器中,Flash或者Flex影片在form标签内用ExternalInterface在JavaScript和ActionScript之间通信时会失效。
当载入、刷新、关闭页面或者关闭浏览器时,会产生如下的错误:

html Code:
  1. Error: [flash_movie_id] is undefined.


比如下面的代码就会产生上述的错误

html Code:
  1. <form>
  2.   <script type="text/javascript">      AC_FL_RunContent( 'codebase','http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0','width','796','height','200','id','sample','align','middle','src','externalinterface','allowscriptaccess','always','quality','high','bgcolor','#ffffff','name','sample','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','externalinterface' ); //end AC code      </script>
  3.   <noscript>
  4.   <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="600" height="200">
  5.     <param name="movie" value="externalinterface.swf" />
  6.     <param name="quality" value="high" />
  7.     <embed src="externalinterface.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="600" height="200"></embed>
  8.   </object>
  9.   </noscript>
  10. </form>

解决方案
方法一:使用JavaScript在Window对象中创建对你的Flash影片的引用。

javascript Code:
  1. window.[flash_movie_id] = document.forms[0].[flash_movie_id] ;

比如,假设你的flash_movie_id是”sample”,就可以像下面这样写:

javascript Code:
  1. <script type="text/javascript">
  2.     window.sample = document.forms[0].sample;
  3. </script>

方法二:添加一个嵌套的form标签
像下面这样

html Code:
  1. <form>
  2. <form></form>
  3. <script type="text/javascript">   AC_FL_RunContent( 'codebase','http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0','width','796','height','200','id','sample','align','middle','src','externalinterface','allowscriptaccess','always','quality','high','bgcolor','#ffffff','name','sample','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','externalinterface' ); //end AC code   </script>
  4. <noscript>
  5. <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="600" height="200">
  6.   <param name="movie" value="externalinterface.swf" />
  7.   <param name="quality" value="high" />
  8.   <embed src="externalinterface.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="600" height="200"></embed>
  9. </object>
  10. </noscript>
  11. </form>

随机文章:

Leave a Reply