firefox,解决firefox的percentloaded()及.readySta...

现在已经对firefox产生了强烈的敬畏情绪,或者是畏多一点,敬只是因为它是大多数人认为的标准。每次IE觉得perfect了,准备松口气了,打开firefox一测试,娘亲耶,面目全非了。所以从现在起,从开头就用firefox测。
percentloaded():
用于读取.swf文件的加载百分比值,多用于制作动画文件的加载进度。常规处理方法在IE下没有问题,而在firefox下不能成功,但并非firefox不能兼容此函数,关键在于firefox支持的是[embed]标签,需在[embed]标签中标记id属性,利用[embed]标签中的id值进行操作。
实例才是王道:
(代码来自网络,稍修改或简化。头疼~QQ空间日志不支持代码编辑器)
<!--flash对象-->
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="game" align="middle" class="flash">
<param name="movie" value="http://flash.2144.cn/qigongzhu/127/ljmnj1oh20110415.swf" />
<param name="quality" value="high" />
<embed src="http://flash.2144.cn/qigongzhu/127/ljmnj1oh20110415.swf" quality="high" id="FFgame" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" class="flash" />
</object>
<!--进度条-->
<div style="border:1px solid #3c3c3c;width:500px;height:20px;font-size:15px"><div id="bar" style="background:#00aaff;"> &nbsp;</div></div>
<!--JS部分-->
<script>
var tmp = document.getElementById('bar');
var gameObj,int;
if (window.ActiveXObject) { //判断是否IE浏览器
gameObj = document.getElementById("game");
}
else {
gameObj = document.getElementById("FFgame");
}
function loadFlash () {
var intPercent = 0;
try {intPercent = gameObj.PercentLoaded();}
catch(e){}
tmp.style.width = intPercent*5+"px";
if (intPercent>=100) {
clearTimeout(int);
}
else {
setTimeout(loadFlash, 100);
}
}
int = setTimeout(loadFlash, 100);
</script>
好了,动画搞定,轮到图片了
.readyState
我们好像习惯了用这个,用来判断图片文件是否加载完成,在IE浏览器下,各情况返回值如下
uninitialized对象未使用数据初始化
loading 对象正在下载数据
loaded 对象已完成下载它的数据
interactive 即使对象没有完全下载数据,用户也可以与其交互
complete对象被完全初始化
但在firefox下,对不起,他永远返回uninitialized,怎么办?
用complete,if(×××.complete==true)
IE、firefox都能实现,但是两者对属性的定义好像不同:
firefox: 一个图像被下载完毕,complete属性就是true,没有下载完毕则为false。
IE: 一个图像没有被下载完毕,则complete属性是false。当下载完毕时,如果此时图片还没有显示,complete为false,显示以后(display:block)此属性才变成true。
Tags: 

延伸阅读

最新评论

发表评论