記ie8及如下版本ie的flash的addCallback的一坑

      近來有一需求,播放聲音,我在高端瀏覽器實現了html5 audio標籤、低端瀏覽器實現了flash兼容。可是在調試ie8如下的瀏覽器發現js死活調不了flash裏的addCallback的方法,總報錯:Object doesn't support this property or method。在stackoverflow上找的解決方法有:html

一、延時調用容器方法html5

二、改變建立節點順序法:先建立一個div,append到dom樹,再建立flash節點append到div裏瀏覽器

折騰了大半天,以上都試過了,都很差使。app

最後終於找到解決方法:減小暴露的addCallback,當暴露的方法>=3時,ie8就有可能會報錯。最早的適合我有4個暴露的容器方法,最後減小爲1個,用一個容器方法傳參去調用相應的原來須要暴露的方法。dom

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。。。this

 

==================================================spa

做者:hotcho調試

出處:http://www.cnblogs.com/cos2004/p/3525111.htmlcode

==================================================htm

相關文章
相關標籤/搜索