2009-07-13 24 views

答えて

15

ExternalInterfaceUtil.addExternalEventListener( "window.onunload"、handleLogout、 "unloadFlex");

package 
{ 
    import flash.external.ExternalInterface; 

    public class ExternalInterfaceUtil 
    { 
     public static function addExternalEventListener(qualifiedEventName:String, callback:Function,callBackAlias:String):void 
     { 
      // 1. Expose the callback function via the callBackAlias 
      ExternalInterface.addCallback(callBackAlias, callback); 
      // 2. Build javascript to execute 
      var jsExecuteCallBack:String = "document.getElementsByName('"+ExternalInterface.objectID+"')[0]."+callBackAlias+"()"; 
      var jsBindEvent:String = "function(){"+qualifiedEventName+"= function(){"+jsExecuteCallBack+"};}"; 
      // 3. Execute the composed javascript to perform the binding of the external event to the specified callBack function 
      ExternalInterface.call(jsBindEvent); 
     } 
    } 
} 

私はこれがどこから得られたのか覚えていませんが、私はそれを使用しています。もちろん、すべてのブラウザが協力するつもりはありませんが、それは何よりも優れています...

+0

それはうまく動作します。フレックスプログラムの中から「JSポップアップで[OK]ボタンをクリックした」ユーザーの声を聞く方法についてのアイデアはありますか? –

1

あなたが探しているものを実現するには、JavaScriptとFlashの組み合わせを使用できます。

Javascriptを使用して、ユーザーがページからナビゲートするタイミングを検出します。 javascriptイベントを使用して、ExternalInterfaceを使用してFlashムービーを呼び出します。コードが呼び出されると、必要に応じてイベントを処理できます。

+0

外部インターフェイス私はあなたがJavaScriptでそれをチェックしますか..扱うことができますか? –

+0

Javascriptには、関数を添付できるwindow.onunloadイベントがあります。残念ながら、過去にブラウザを悪用したため、ユーザがウィンドウを閉じたときにonunloadイベントを呼び出すブラウザはありません。私はオペラがないという事実を知っている、私は他人についてはわからない。 – Powerlord

1

私は1つの例外を除いて私にはうまくいきました。私が文字列としてnullを返した場合、アップ。これはIE以外のすべてのブラウザで機能し、「null」と表示されるダイアログボックスが表示されます。ヌルチェックを追加する1行を変更することによって補正することができ

var jsBindEvent:String = "function(){"+qualifiedEventName+"= function(){if (" + jsExecuteCallBack + ") return "+jsExecuteCallBack+"};}"; 
関連する問題