记ie8及以下版本ie的flash的addCallback的一坑
2024-08-25 05:16:30
近来有一需求,播放声音,我在高端浏览器实现了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个,用一个容器方法传参去调用相应的原来需要暴露的方法。
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
出处:http://www.cnblogs.com/cos2004/p/3525111.html
==================================================
最新文章
- HTML5小游戏之见缝插针
- Eclipse - 修改默认user和类的创建日期
- PHP中spl_autoload_register()函数
- mysql 分表策略
- treap 1286郁闷的出纳员.cpp
- 图片来自腾讯,未经授权不可引用,js解决方法
- POJ 3177 Redundant Paths(强连通分量)
- javaSE_07Java中类和对象-封装特性
- ASP.NET Core远程调试
- ARTS打卡计划第二周-Tips-mysql-binlog-connector-java的使用
- webForm TO MVC
- Shell 编程(实例二)
- 转--看完让你彻底搞懂Websocket原理
- Spring JDBC PreparedStatementSetter接口示例
- Java程序设计实验 实验五
- make linux test main attempt to index a nil value
- 使用css弹性盒子模型
- CF 96 D. Volleyball
- 常用的gnome shell扩展
- JQueryEasyUI-DataGrid显示数据,条件查询,排序及分页