前の質問よりも抽象的なレベルで、私の経験では、AS3 を使用して埋め込み .swf から HTML ページで JavaScript 関数を呼び出すには、ExternalInterface、fscommand、navigateToURL の 3 つの方法があります。
これらの方法 (およびリストに挙げていない他の方法も) を比較対照し、それぞれの長所と短所について話しましょう。実行速度などの点で具体的な利点はありますか? 興味があります - 私たちはどう思いますか?
前の質問よりも抽象的なレベルで、私の経験では、AS3 を使用して埋め込み .swf から HTML ページで JavaScript 関数を呼び出すには、ExternalInterface、fscommand、navigateToURL の 3 つの方法があります。
これらの方法 (およびリストに挙げていない他の方法も) を比較対照し、それぞれの長所と短所について話しましょう。実行速度などの点で具体的な利点はありますか? 興味があります - 私たちはどう思いますか?
ExternalInferfaceは、JSとFlashの間の通信を容易にするために作成されたため、他のものを使用することは実際には意味がありません。一般的な方法は、JSを呼び出す前に、ExternalInterface.availableプロパティの値を評価して、最初に使用可能かどうかを確認することです。このプロパティは、JSを呼び出すSWFが、外部インターフェイスを提供するコンテナ内にあるかどうかを示します。言い換えれば、ExternalInterfaceを使用すると機能します。利用できない場合は、flash.net.sendToUrlを使用してください。fscommand()はVBScriptを使用し、ページ上の他のVBScriptと競合する可能性があるため、絶対に使用しないでください。さらに、fscommandで送信できる引数文字列は1つだけであり、JS側で分割する必要があります。
それはすべて、どこでExternaInterface
データを返すことができ、非同期であり、JavaScript関数のみを呼び出すことができるため、通信を同期にするかどうかに依存します。値や応答を返すことはできません。navigatoToURL
fscommand
外部インターフェイスに関連するライブ ドキュメントから:
ActionScript から、HTML ページで次の操作を実行できます。
- JavaScript 関数を呼び出します。
- 任意の数の引数を任意の名前で渡します。
- さまざまなデータ型 (ブール値、数値、文字列など) を渡します。
- JavaScript 関数から戻り値を受け取ります。
HTML ページの JavaScript から、次のことができます。
- ActionScript 関数を呼び出します。
- 標準の関数呼び出し表記を使用して引数を渡します。
- JavaScript 関数に値を返します。
クラスは、flash.external.ExternalInterface
クラスの直接の置き換えですflash.system.fscommand
。
したがって、ExternalInterface の使用は、flash と Javascript 関数の間の方法または通信として推奨されますが、呼び出しが単に非同期である場合は、flash.net.navigateToURL
.
外部インターフェース
getURL
fsコマンド