注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

obsolete

wanna go

 
 
 

日志

 
 

火狐下flash重新加载的bug的解决方法  

2012-05-11 16:54:02|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

做项目的时候遇到一个bug,firefox下一个弹层会引起flash重新加载,而其他浏览器就没有这样的bug。

过程是这样的:

DOM ready的时候我在页面嵌入了flash,flash初始化完成,然后开始执行,这时用户触发了一个弹窗操作将 body的overflow设置为了hidden,这时flash重新加载了,flash正在进行的进程被打断,和flash交互的js开始报错。

猜想可能是用户触发的弹层覆盖了flash,我试着改变 flash的 position 来移动flash 位置,比如移出可视区域,这时有的版本的火狐flash初始化都不执行了,可以初始化的版本一样存在flash重新加载的bug。接着我试着修改z- index,使flash不被覆盖,结果都是没有解决问题。

既然在本页面不可以,触发了页面reflow,我试着将在页面嵌入一个iframe,iframe再嵌入flash,但火狐下竟然也会触发iframe内的flash重新加载,再次失败。

改变flash的位置和层级都能解决问题,好像已经山穷水尽。但是我们终于找到解决办法,既然改变body触发了reflow,我们将flash嵌到了body以外.

//创建元素var el = document.createElement(‘div’);el.id = ‘flashcon’;document.documentElement.appendChlid(el);

 

//than 嵌入 flash,需要引入swfobject.js

swfobject.embedSWF(”);

好的,在浏览器是火狐时,我们将flash单独嵌入到body以外,问题得到解决。




firefox下修改flash父容器样式导致flash重绘重新加载的问题



有一html代码片段如下:


<div style="float: left;">
    <object id="coupletLeft" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
    <param name="quality" value="high" />
    <param name="wmode" value="opaque" />
    <param name="src" value="bl20300l_110222.swf" />
    <param name="name" value="coupletLeft" />
    <embed id="coupletLeft"
               type="application/x-shockwave-flash"
               src="http://readwall.blog.163.com/blog/bl20300l_110222.swf"
               name="coupletLeft"
               wmode="opaque"
               quality="high">
     </embed>
</object>
</div>


现在希望设置这个flash的父容器div的float来控制div居左还是居中,firefox下发现,只要修改div的样式属性,包括 width、height、float等等,都会导致内部元素重绘,flash会重新加载从头开始播放,该问题只在firefox下才有。

后来发现,有个方案可以避免这个问题,就是把div的position改为absolute,使用绝对定会,用left属性来控制其居中还是居左。

  评论这张
 
阅读(1282)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018