ie 8と以下のバージョンieのflashのaddCallbackの1つの穴を覚えます
2911 ワード
最近、音声を再生する需要があり、私はハイエンドブラウザでhtml 5 audioラベル、ローエンドブラウザでflash互換性を実現しました.しかし、ie 8以下をデバッグしたブラウザでは、jsがflashのaddCallbackを無効にする方法が発見され、Object doesn't support this property or methodとエラーが発生しました.stackoverflowで探した解決方法は次のとおりです.
1、遅延呼び出しコンテナ方法
2、ノードの作成順序の変更:divを作成し、appendをdomツリーに作成し、flashノードappendをdivに作成する
長いこと振り回されたが,以上はやってみたが,どれも使いにくい.
最後にやっと解決策を見つけた:曝露を減らすaddCallback,曝露の方法>=3でie 8が誤報する可能性がある.最初の適合は私に4つの暴露の容器の方法があって、最後に1つに減らして、1つの容器の方法で相応のもとの暴露の方法を呼び出します.
真心坑人啊ieこのバグ..
==================================================
作者:hotcho
出典:http://www.cnblogs.com/cos2004/p/3525111.html
==================================================
1、遅延呼び出しコンテナ方法
2、ノードの作成順序の変更:divを作成し、appendをdomツリーに作成し、flashノードappendをdivに作成する
長いこと振り回されたが,以上はやってみたが,どれも使いにくい.
最後にやっと解決策を見つけた:曝露を減らすaddCallback,曝露の方法>=3でie 8が誤報する可能性がある.最初の適合は私に4つの暴露の容器の方法があって、最後に1つに減らして、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このバグ..
==================================================
作者:hotcho
出典:http://www.cnblogs.com/cos2004/p/3525111.html
==================================================