Flash需要和JS交互,但是在ie外壳浏览器下,有时候缓存会导致页面刷新后flash无法工作.
会报出SecurityError.
这是因为Flash并没有完全准备好,就尝试和JS交互导致的问题.
解决的问题方式有几种:
1.在页面上设置不缓存,网上有很多文章介绍.
2.在flash的url后加入随机串,每次都重新请求flash不让浏览器缓存.
3. 1和2对于小流量的网站是可以接受的,对于大流量的网站每次都重新请求不缓存是很悲剧的.所以需要从flash的代码中来解决这个问题..
1).在全局初始化之前,使用Timer判断flash的宽度是否大于零
2).宽度大于零之后,调用页面的js函数,保证flash与js通信畅通后开始初始化.
var initTimer = new Timer(300, 0); /*时间可随意*/
initTimer.addEventListener(TimerEvent.Timer, _initTimer);
initTimer.start();
function _initTimer(evt:TimerEvent):void {
if(stage.stageWidth > 0) {
initTimer.stop();
}
}
function checkJS():void {
var jsReady:Boolean = false;
try{
jsReady = ExternalInterface.call('jsReady);
if(jsReady){
init();
}else{
checkJS();
}
}catch(e:*){
checkJS();
}
}
JS部分只需要给一个纯return true的函数即可
function jsReady(){return true;}
这样就可以解决缓存带来的flash问题了.
感谢姚晓谊提供方法!
本文介绍了解决IE浏览器因缓存导致的Flash加载失败问题的方法,通过设置页面不缓存、请求URL加入随机串及修改Flash内部代码等手段确保Flash与JS交互正常。
772

被折叠的 条评论
为什么被折叠?



