2009-05-19 19 views
0

HI、externalinterface - SWFからJavaScriptを呼び出す

私のactionscriptコードからjavascript関数を呼び出そうとしていますが、動作していません。

AS3:

if (ExternalInterface.available) 
    { 
    try 
    { 
    ExternalInterface.addCallback("changeDocumentTitle",null); 
    } 
    catch(error:Error) 

JS(swfobjectを使用して、速度ファイル内)

function changeDocumentTitle() 
    { 
     alert('call from SWF'); 
    } 

はhappenin何ができるか、誰を知っていますか?

+0

これはローカルで行われていますか?それはウェブ上で起こるか? – quoo

+0

websphereサーバー上で実行されている – cduggan

+0

私はjs関数を同じhtmlまたはswfが埋め込まれているファイルに移動してみます。もしそうなら、あなたの外部のjsが含まれていない可能性があります。 – quoo

答えて

7

Flexアプリケーション内からJS関数を呼び出そうとしている場合、ExternalInterface.call(...)ではなくExternalInterface.addCallback(...)を使用します。

のpublic static関数呼び出し(functionNameを::文字列、...引数):ドキュメントから*

は、ゼロ個以上の引数を渡すには、Flash Playerコンテナで公開されている関数を呼び出します。関数が利用できない場合、呼び出しはnullを返します。それ以外の場合は、関数が提供する値を返します。 OperaやNetscapeのブラウザでは再帰は許可されません。これらのブラウザでは、再帰呼び出しによってヌル応答が生成されます。 (再帰はInternet ExplorerとFirefoxブラウザでサポートされています)

コンテナがHTMLページの場合、このメソッドはスクリプト要素内のJavaScript関数を呼び出します。

http://livedocs.adobe.com/flex/3/langref/flash/external/ExternalInterface.html

あなたはそれがJavaScriptで呼び出すことができるように、あなたのFlashアプリからHTMLコンテナにActionScript関数を公開したい場合はaddCallback()が使用されています。

+1

ええと、私は質問を読むときにそれを逃したとは思えません。 – quoo

0

ローカルシステムでは、セキュリティ問題によってSWFとJavascript間の通信が妨げられる傾向があります。フラッシュを再設定して、「設定マネージャ」を介してこれらの通信の一部を許可することができます。

"allowscriptacces"がフラッシュオブジェクトを埋め込む場所に設定されていないと、問題が発生することもあります。

もう1つの問題は、JavaScriptがロードされる前にFlashがjavascriptを呼び出そうとしている可能性があります。 initオーダーは非常に面倒なことがあります。

関連する問題