在form表单中,如果使用Adobe提供的AC_FL_RunContent的JS,或者使用如swfobject之类的JS(都是解决IE下激活的问题),同时又在Flash中使用了ExternalInterface的方法,就会发生flash无法找到的错误。
网上搜寻解决方法,找到网友写的一个和官方提供的两个,感叹官方提供的方法原来如此简单。。。
首先是网友提供的方法:
<script type="text/javascript">
function ExternalInterfaceManager()
{
this.registerMovie = function(movieName) {
if(!window.fakeMovies) window.fakeMovies = new Array();
window.fakeMovies[window.fakeMovies.length] = movieName;
}
this.initialize = function() {
if(document.all)
{
if(window.fakeMovies)
{
for(i=0;i<window.fakeMovies.length;i++)
{
window[window.fakeMovies[i]] = new Object();
}
window.onload = initializeExternalInterface;
}
}
}
}
function initializeExternalInterface() {
for(i=0;i<window.fakeMovies.length;i++) {
var movieName = window.fakeMovies[i];
var fakeMovie = window[movieName];
var realMovie = document.getElementById(movieName);
for(var method in fakeMovie) {
realMovie[method] = function() {flashFunction = " + method.toString() + "\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments, 0) + "";this.CallFunction(flashFunction);}
}
window[movieName] = realMovie;
}
}
var eim = new ExternalInterfaceManager();
eim.registerMovie("flash_id");
eim.initialize();
</script>
然后是官方提供的两个方法:
一、将以下代码放到flash文件代码之后,蓝色部分(sample)替换为你自己flash的ID。
二、添加一个空的form标签到原form的后面,如:
<form><form></form>
<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>
<noscript><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">
<param name="movie" value="externalinterface.swf" />
<param name="quality" value="high" />
<embed src="externalinterface.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="600" height="200"></embed>
</object></noscript>
</form>
官方原文链接
Using ExternalInterface within a