这个坑最早的时候是在08年10月份左右,做网页整蛊交互的时候遇到过。
当时的需求是点击网页装扮的时候会弹出一个层,层内有很多TAB选项卡,而有一个对图片处理的swf(让用户选择一张图片、编辑图片)放在其中一个选项卡中,而当来回切换tab选项卡的时候,swf会被重新加载。那时候还没有chrome,所以在ff会遇到这个问题,IE下不会。后面在小组内我记得有总结过FF下什么情况下会触发swf的重新渲染:
1、将swf元素的display属性由none切换至block时;
2、将swf元素由页面内完全不可见的区域移动可见区域时(这一点现在需要再次证实一下);
当时的解决办法现在不大记得了,如果现在让我给一个方案,我会选择使用移动dom来处理这个问题:将swf从它的你层移动当前可见的tab层,当切换回去的时候再移回原来的位置。
由于最近很长的时候已经将重心转到flash相关的开发上,所以对于网页中遇到的一些问题,我能不过问都不会去仔细看。
但最近在将游戏接入新浪微博的微游戏的平台时,遇到了一个问题:就是点击游戏内(flash)一个按钮,调用页面中的js函数,这个时候会将swf隐藏(none掉了,因为swf不能设置它的wmode为transparent--透明,设置后游戏有些模块在操作中会受影响),而当处理完操作后,会再将游戏显示出来(block),然后看到游戏重新加载了,IE下没有发现此问题,chrome百分百重现此问题。后来我调试进去,蓦然发现此问题我以前遇到过,然后修整了一个,将swf的display属性设置由none <–> block改为visibility的 visible <-> hidden,这样测试现在暂时没有问题。
出现此问题的原因,以前查过相关资源,好像是说ff和chrome这一类的浏览器,在加载和渲染flash的时候使用了延后处理的技术,对flash的支持也没有像IE那样好。