zoukankan      html  css  js  c++  java
  • 记ie8及以下版本ie的flash的addCallback的一坑

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

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

  • 相关阅读:
    虚拟机黑屏
    ngnix随笔三
    ngnix随笔二
    ngnix随笔一
    HTML(初级)笔记
    学习Java注解
    常用工具类与commons 类库
    SpringBoot缓存使用
    LeetCode:98.验证二叉搜索树
    剑指Offer:面试题07.重建二叉树
  • 原文地址:https://www.cnblogs.com/cos2004/p/3525111.html
Copyright © 2011-2022 走看看