预先加载FLASH SWF文件
出自小鱼工作室
如果你在用一个比较大的FLASH,而且一个页面的好多个地方用到了这个FLASH,IE会很傻叉的多个线程来一起下载这个资源,比如原先flash大小是200K,那么你用到了5个地方,IE就会开5个线程来下载,实际上你的下载量达到了1M多,这对一个网页来说是完全不可以接受的。
我们在实际当中在 http://www.taobaotools.cn 使用了很多 open-flash-chart.swf ,总的原理就是用js控制下,先加载一个open-flash-chart.swf,然后其他 open-flash-chart.swf 就在缓存当中了不用去读了,尝试了不少办法,最后是用ajax实现的
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript">
function createflash(){
swfobject.embedSWF(
"open-flash-chart.swf", "list25",
"450", "250", "9.0.0", "expressInstall.swf",
{"data-file":"gallery%2Foneday2.php%3Ftid%3D5%26dateinput%3D2008-11-25"} );
swfobject.embedSWF(
"open-flash-chart.swf", "list26",
"450", "250", "9.0.0", "expressInstall.swf",
{"data-file":"gallery%2Foneday2.php%3Ftid%3D6%26dateinput%3D2008-11-25"} );
swfobject.embedSWF(
"open-flash-chart.swf", "list27",
"450", "250", "9.0.0", "expressInstall.swf",
{"data-file":"gallery%2Foneday2.php%3Ftid%3D7%26dateinput%3D2008-11-25"} );
swfobject.embedSWF(
"open-flash-chart.swf", "list23",
"450", "250", "9.0.0", "expressInstall.swf",
{"data-file":"gallery%2Foneday2.php%3Ftid%3D3%26dateinput%3D2008-11-25"} );
swfobject.embedSWF(
"open-flash-chart.swf", "list24",
"450", "250", "9.0.0", "expressInstall.swf",
{"data-file":"gallery%2Foneday2.php%3Ftid%3D4%26dateinput%3D2008-11-25"} );
}
</script>
<script type="text/javascript">
function createAjax(){
if(window.XMLHttpRequest){
return new XMLHttpRequest();
}else if(window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
var url = 'open-flash-chart.swf';
var ajax = createAjax();
ajax.open('GET', url, true);
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.onreadystatechange = function(){
if(ajax.readyState == 4){
if(ajax.status == 200){
//var content = ajax.responseText;
createflash();
}
delete ajax;
}
}
ajax.send("");
</script>
