風谷设计

网页设计,平面设计,UI设计,界面设计,美工,优秀博文,design,风谷设计,设计Blog,blog,设计博客,lzlee,l.z.lee

导航

[js] 工作小记

最近有点累~不知道是不是天气原因,整人的心都很闷。
这个星期一直在做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';

  • 什么好   回复 2010-8-2 17:35:50       
  • js,html,css,ps....大哥,你懂的真多。Love

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表



Version Design2010 V4.0

Copyright © 2008-2010 風谷設計. All rights reserved. Design by L.z.Lee

ICP备案号:粤ICP备08032725号 |