2009-07-13 13 views

cevap

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); 
     } 
    } 
} 

Bunu nereden aldığımı hatırlamıyorum, ancak kullandım ve gayet iyi çalışıyor. Tabii ki tüm tarayıcılar işbirliği yapmayacaklar, ama hiçbir şeyden daha iyisi yok ...

+0

Bu fevkalade iyi çalışıyor. Esnek programın içinden "JS açılır penceresindeki kullanıcı OK düğmesini tıkladığında" nasıl dinlediğiniz hakkında bir fikrin var mı? –

1

Aradığınızı elde etmek için Javascript ve Flash'ın bir bileşimini kullanabilirsiniz.

Kullanıcının sayfadan ayrılıp ayrılmadığını saptamak için Javascript kullanın. ExternalInterface kullanarak Flash filminize çağırmak için javascript olayını kullanın. Kodunuz çağrıldıktan sonra, olayı gerektiği gibi halledebilirsiniz.

+0

harici arabirim nasıl javascript bunu kontrol edebilirim: boş çek eklemek için bir satır değiştirerek düzeltilebilir

? –

+0

Javascript'in bir işlevi ekleyebileceğiniz bir window.onunload olayı vardır. Ne yazık ki, bazı tarayıcılar, kullanıcı geçmişte kötüye kullanımı nedeniyle pencereyi kapattığında daima onunload olayını çağırmayacaktır. Opera'nın bilmediği bir gerçek için biliyorum, diğerleri hakkında emin değilim. – Powerlord

1

Yukarıdakiler benim için bir istisna dışında harika çalıştı: eğer dizgim olarak null döndürürsem, herhangi bir mesajın pop olmasını istemiyorum yukarı. IE dışındaki tüm tarayıcılarda çalışır ve "null" yazan bir iletişim kutusu açar. i .. işleyebilir

var jsBindEvent:String = "function(){"+qualifiedEventName+"= function(){if (" + jsExecuteCallBack + ") return "+jsExecuteCallBack+"};}";