记ie8及以下版本ie的flash的addCallback的一坑
2014-01-18 15:14
218 查看
近来有一需求,播放声音,我在高端浏览器实现了html5 audio标签、低端浏览器实现了flash兼容。但是在调试ie8以下的浏览器发现js死活调不了flash里的addCallback的方法,总报错:Object doesn't support this property or method。在stackoverflow上找的解决方法有:
1、延时调用容器方法
2、改变创建节点顺序法:先创建一个div,append到dom树,再创建flash节点append到div里
折腾了大半天,以上都试过了,都不好使。
最后终于找到解决方法:减少暴露的addCallback,当暴露的方法>=3时,ie8就有可能会报错。最先的适合我有4个暴露的容器方法,最后减少为1个,用一个容器方法传参去调用相应的原来需要暴露的方法。
真心坑人啊ie这个bug。。。
==================================================
作者:hotcho
出处:/article/5916763.html
==================================================
1、延时调用容器方法
2、改变创建节点顺序法:先创建一个div,append到dom树,再创建flash节点append到div里
折腾了大半天,以上都试过了,都不好使。
最后终于找到解决方法:减少暴露的addCallback,当暴露的方法>=3时,ie8就有可能会报错。最先的适合我有4个暴露的容器方法,最后减少为1个,用一个容器方法传参去调用相应的原来需要暴露的方法。
private function init(): void { var e = ExternalInterface; if (e.available) { e.addCallback('doAction', this.doAction); } } public function doAction(_action: String = '', ...args): void { switch(_action) { case 'methodA': this.methodA.call(this, args); break; case 'methodB': this.methodB.apply(this, args); break; case 'methodC': this.methodC(); break; } }
真心坑人啊ie这个bug。。。
==================================================
作者:hotcho
出处:/article/5916763.html
==================================================
相关文章推荐
- 轻松搞定各版本IE兼容问题,IE6,IE7,IE8,IE9,IE10,IE11
- 关于tomcat配置https 引发的一系列问题特别是ie8以下(包括ie8)版本
- ie8及其以下版本兼容性问题之placeholder实现
- 兼容ie10以下版本的placeholder属性
- firefox、 chrome、ie8通过什么方式调用as3 addCallback
- IE6、IE7、IE8之IE多版本共存的几种方法
- IE7、IE8、IE9、IE10后各版本的更新内容和各版本的差别
- 让AngularJS兼容IE8及其以下浏览器版本的方法
- IE6、IE7、IE8之IE多版本共存的几种方法
- Flash设置(各种版本浏览器包括低版本IE)
- IE6、IE7、IE8之IE多版本共存的几种方法 (2009-02-27更新)
- IE7、IE8、IE9、IE10后各版本的更新内容和各版本的差别
- IE6、IE7、IE8之IE多版本共存的几种方法
- jQuery中removeAttr方法在IE8以下版本中的Bug
- 【转】判断浏览器版本是否是ie8以下浏览器,如果是调到提示换更高级版本浏览器页面
- jwPlayer实现支持IE8及以下版本避免出错的方法
- ie8及其以下版本兼容性问题之文本省略
- IE8及以下版本,兼容rgba颜色的半透明背景
- IE6、IE7、IE8之IE多版本共存的几种方法
- 让AngularJS兼容IE8及其以下浏览器版本的方法