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

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

记ie8及以下版本ie的flash的addCallback的一坑的更多相关文章

  1. 从Chrome 69.0 版本起,Flash权限受到进一步限制,默认仅在当前浏览器会话有效。

    # 69.0 之后的版本 ## 从Chrome 69.0 版本起,Flash权限受到进一步限制,默认仅在当前浏览器会话有效.关闭Enable Ephemeral Flash Permissions , ...

  2. 解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题

    问题描述:     在IE8及以下版本时,点击label标签无法自动触发checkbox的click事件,导致无法产生希望的效果. 原HTML代码: <div class="col-s ...

  3. [.NET跨平台]Jeuxs独立版本的便利与过程中的一些坑

    本文环境与前言 之前写过一篇相关的文章:在.NET Core之前,实现.Net跨平台之Mono+CentOS+Jexus初体验 当时的部署还是比较繁琐的,而且需要联网下载各种东西..有兴趣的可以看看, ...

  4. [.NET跨平台]Jexus独立版本的便利与过程中的一些坑

    本文环境与前言 之前写过一篇相关的文章:在.NET Core之前,实现.Net跨平台之Mono+CentOS+Jexus初体验 当时的部署还是比较繁琐的,而且需要联网下载各种东西..有兴趣的可以看看, ...

  5. jwPlayer实现支持IE8及以下版本避免出错的方法

    jwplayer在支持Html5的情况下会自动使用html5的video和audio标签进行播放视频和音频.但是在IE中版本低于IE9时 <script src="jwplayer.h ...

  6. Chrome浏览器 54 版本显示“Adobe flash player已过期”问题解决

    背景 电脑上面的软件很久没升级,用腾讯电脑管家批量做了一次升级,结果Chrome浏览器升级到54版本flash控件没法用了. 第一时间想到直接到flash官网下载一个新的进行安装,结果官网检测显示,C ...

  7. 记一次netty版本冲突,报java.lang.NoSuchMethodError: io.netty.util.internal.ObjectUtil.checkPositive的问题

    elasticsearch 5.6中使用TransportClient初始化抛异常 在引入elasticsearch5.6的transportclient包中,会引入netty进行通信. <!- ...

  8. ie8及其以下版本兼容性问题之placeholder实现

    1. 普通浏览器下修改placeholder颜色 因为每个浏览器的CSS选择器都有所差异,所以需要针对每个浏览器做单独的设定. 示例: input::-webkit-input-placeholder ...

  9. ie8及其以下版本兼容性问题之input file隐藏上传文件

    文件上传时,默认的file标签很难看,而且每个浏览器下都有很大差距.因此我们基本都把真正的file标签给隐藏,然后创建一个标签来替代它.但是由于IE出于安全方面的考虑上传文件时必须点击file的浏览按 ...

随机推荐

  1. 3->集群架构主机克隆教程

    centos7系统集群主机克隆: 有道笔记链接地址

  2. window时间同步机制的简单介绍

    1 window自身现在采用w32tm程序来进行时间校正,window自身携带NTP程序,但默认下时关闭的,默认的NTP时客户端. 2 w32tm时用来代替早期的时钟同步程序net  time 3 w ...

  3. hihoCoder #1183 : 连通性一·割边与割点(求割边与各点模板)

    #1183 : 连通性一·割边与割点 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 还记得上次小Hi和小Ho学校被黑客攻击的事情么,那一次攻击最后造成了学校网络数据的丢 ...

  4. NOIP2018初赛 解题报告(C++普及)

    第24届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2018 年 10 月 13 日 14:30~16:30 选手注意: 1.试题纸共有 7 页,答题纸共有 2 页,满分 100 ...

  5. javascript输入验证数字方法,适合充值时输入正整数验证

    说明:用于验证正整数的输入,不允许输入其他字符. html: <input type="text" id="sell_jobNum" name=" ...

  6. java 基础类库之 SysFun

    /** * 将对象转为字符串:为空,则返回空字符串:而不是"null" * @param pObj 为空,则返回空字符串 * @return */ public static St ...

  7. MVC图片上传并显示缩略图

    前面已经说了怎么通过MVC来上传文件,那么这次就说说如何上传图片然后显示缩略图,这个的实用性还是比较大.用UpLoad文件夹来保存上传的图片,而Temp文件夹来保存缩略图,前面文件上传部分就不再重复了 ...

  8. js获取iframe的id

    有一个需求是在iframe页面调用父页面一个方法,开始我用window.parent.length来判断页面有几个层,但是不好用,因为我的浏览器安装了一个插件,这个插件会动态向页面插入一个iframe ...

  9. Django第一步

    对于一个web框架,掌握了三部分的内容,就可以说是迈出了第一步. 1. 准备开发环境 2. 创建一个工程,并运行 3. 开发hello world应用 1. 准备环境 首先应该是安装python和dj ...

  10. IntelliJ IDEA 2017.2安装

    1.准备(终极版) 2.安装 3.破解 4.成功