近来有一需求,播放声音,我在高端浏览器实现了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

==================================================

最新文章

  1. HTML5小游戏之见缝插针
  2. Eclipse - 修改默认user和类的创建日期
  3. PHP中spl_autoload_register()函数
  4. mysql 分表策略
  5. treap 1286郁闷的出纳员.cpp
  6. 图片来自腾讯,未经授权不可引用,js解决方法
  7. POJ 3177 Redundant Paths(强连通分量)
  8. javaSE_07Java中类和对象-封装特性
  9. ASP.NET Core远程调试
  10. ARTS打卡计划第二周-Tips-mysql-binlog-connector-java的使用
  11. webForm TO MVC
  12. Shell 编程(实例二)
  13. 转--看完让你彻底搞懂Websocket原理
  14. Spring JDBC PreparedStatementSetter接口示例
  15. Java程序设计实验 实验五
  16. make linux test main attempt to index a nil value
  17. 使用css弹性盒子模型
  18. CF 96 D. Volleyball
  19. 常用的gnome shell扩展
  20. JQueryEasyUI-DataGrid显示数据,条件查询,排序及分页

热门文章

  1. 深入理解HashMap(及hash函数的真正巧妙之处)
  2. 2017 MoveIt!更新 ros indigo
  3. SQLSERVER 2008 编辑所有或者任意行
  4. 插入标识列identity_insert
  5. SQL2008关于权限的解释
  6. Linux基础入门学习笔记之四
  7. KnockoutJs学习笔记(一)
  8. spring-boot分环境打包为jar包
  9. CF455D. Serega and Fun
  10. 【PAT】1016 部分A+B(15 分)