【记录】用js调用flash的方法,IE6-8出现的问题

本文解决了一个特定的问题,在IE6-8浏览器中使用JavaScript调用Flash方法时遇到的缓存导致无法调用的问题。通过动态加载Flash并添加随机数参数成功解决了这一难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天项目有个功能,必须使用js去调用flash的方法,来改变flash的内部状态。

其他浏览器都挺好,唯独IE6-8会出现问题。使用下面代码(用js调用flash的func方法并传递一个数字)!


  
function callFlash (index){
// 这里使用了jquery浏览器检查
var flash = $.browser.msie && $.browser.version !== " 9.0 " ? window[ " magic " ] : document[ " magic " ];
// flash.func func是flash 里面的一个方法,有些时候 flash可能已经准备好,但是不一定可以调用方法
if (flash && flash.func){
flash.func(index);
}
else {
setTimeout(callFlash,
5000 );
}
}

在IE6-8下面会出现问题。第二次进入页面,flash 已经被缓存,监测flash.func始终是false。这样就不能调用flash.func方法。

最后的解决方法,使用swfObejct.js 动态把flash 载入页面,然后针对IE6-8加上flash.swf?Math.random();(随机数),禁止缓存。

当然这可能不是最好的办法。

	function (){
		var a = $.browser.msie&&$.browser.version!=="9.0" ? ('?'+Math.random()) : "";
		var b=new SWFObject("/swfs/magic.swf"+a,"magic","310","316","7","#336699");//swfobject是一个插件
		b.addParam("allowScriptAccess","always");
		b.addParam("wmode","transparent");
		b.write("MagicCardGameFlash")
	}

看起来这很简单,其实也为难很长一段时间。

来自3楼的推荐:http://q.pnq.cc/archives/443(一个更好的方案)


转载于:https://www.cnblogs.com/idche/archive/2011/05/08/2040219.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值