
最近有点累~不知道是不是天气原因,整人的心都很闷。
这个星期一直在做9191新版的播放页。
遇到了几个问题,特此小记一下。
1. PercentLoaded() 兼容火狐(Firefox)或其他浏览器
PercentLoaded() 这个函数返回的是flash的下载百分比。
先看看代码
<object height="540" width="730" bgcolor="#000000" allownetworking="internal" id="flashgame_swf" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
<param value="http://dx1.9191.com/flash_9191/益智类/素描画几何体.swf" name="src">
<param value="sameDomain" name="allowScriptAccess">
<param value="" name="AllowNetworking">
<param value="high" name="quality">
<param value="" name="wmode">
<embed height="540" width="730" allownetworking="internal" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Pro d_Version=ShockwaveFlash" wmode="" type="application/x-shockwave-flash" menu="true" loop="false" name="flashgame_swf_notIE" src="http://dx1.9191.com/flash_9191/益智类/素描画几何体.swf">
</object>
<script>
var loaded = document.getElementById('flashgame_swf').PercentLoaded();
alert(loaded);
</script>
问题:在IE下,var flashgame = document.getElementById('flashgame_swf').PercentLoaded(); 这段代码是没问题
但在FF下,就一直报错。百度和Google了下,说法是PercentLoaded()不支持火狐。
调试:但经过调试,是可以的。
在FF下的代码是这样的。var flashgameEmbed = document.embeds["flashgame_swf_notIE"].PercentLoaded();
注意,flashgame_swf_ff是embed标签name属性的值。
结论:那么js代码就应该这样写了
<script>
if(navigator.userAgent.indexOf("MSIE") > 0){//判断是否IE浏览器
var loaded = document.getElementById('flashgame_swf').PercentLoaded();
}
else{
var flashgameEmbed = document.embeds["flashgame_swf_notIE"].PercentLoaded();
}
alert(loaded);
</script>
原理:IE浏览器是获取object标签来读取flash的PercentLoaded()函数
但火狐或者是谷歌浏览器(Chrome)是获取embed标签来读取flash的PercentLoaded()函数
拓展:很奇怪的地方是object和embed不能共存ID属性,也就是说,在做以上代码工作的时候,embed不要加ID属性
以上代码在ie6,ie7,ie8,Firefox,Chrome测试通过
假如哪里说的不对,希望指正
2.Iframe 控制父窗口元素
parent.document.getElementById('downStatus').innerHTML="下载完成";
用parent来调用控制父窗口元素 代码如上
3.父窗口控制Iframe内部元素(兼容多浏览器)
html代码
<iframe id="flash_frame" src="yourUrl.html"></iframe>
js代码
在IE下的代码是 document.frames["flash_frame"].document.getElementById('gameobj').style.width = rw+'px';
在FF下的代码是 document.getElementById("flash_frame").contentDocument.getElementById('gameobj').style.width = rw+'px';