Kullanıcı (pop-up) penceresini kapatır bazı JavaScript Çağrı

5 Cevap php

Bu kullanıcı bir pencereyi kapattığında bazı JS çağırmak mümkün mü?

Ben kullanıcı mutlaka pencereyi kapatma değil, bir sayfa bıraktığı zaman komut dosyası çağırır, JS olay işleyicileri için aradı ve sadece onunload bulundu.

Kullanım amacı açılan pencereye ilgili bir kaç seans seçeneği kaldırır AJAX komut aramak. Veya bu amaca ulaşmak için daha iyi bir yolu var olmayabilir?

I this DevShed thread olan bu JS ile mümkün olduğu belirtiliyor, ancak bu komut aramak için tam olarak nasıl izah etmez bulundu.

Ne yazık ki bu bir çözüm için en etkili Google aramaları ihtiyacım ne tersidir, window.close getirmek!

5 Cevap

Aşağıdaki kod Firefox, IE 8, ve "Google Chrome" çalışır.

Açılış penceresinde

<script src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.3/mootools-yui-compressed.js"></script>
<script>
function on_popup_close(){
  //put your code here
  alert('it closed');
}
</script>

Popup

<script>
function inform_parent(){
  opener.on_popup_close();
} 

window.onbeforeunload = inform_parent;
</script>

Açılan pencerede için kod ilk satırı dolar işareti operatörü uygulayan favori çerçeve olabilir.

See my demo here

alt pencere hala var (örneğin her 100 ms veya bu yüzden kontrol) ve fırlatma komut dosyası değilse eğer ana penceresinden kontrol edebilirsiniz ...

window.opener tesiste bir görünüm var. IE dışında oldukça iyi olan support. Sen window.close() açılır pencere ing önce ana penceresinde bazı javascript fonksiyonları çağırmak için kullanabilirsiniz.

Uygulamada çalışır, ancak konu iç sayfalara seyreden ise, neden bir bağlantı sayfası tıklandığında her çeşit global bir değişkeni ayarlamak ve bu Kaldırıldığında kontrol olup olmadığını Fikrim yok?

: (JQuery bahane, ben son derece tembel değilim) gibi bir şey

INTERNAL_CLICKED = false;

$("a").click(function() {
    INTERNAL_CLICKED = true;
});

window.onunload = function() {
    if(!INTERNAL_CLICKED) {
    	// perform window unload code
    }
}

Tamamen denenmemiş, yinelemek, ama kim bilir - iyi sadece sizin için çalışabilir. Ben dikkat ediyorum, her ne kadar, muhtemelen de yenileme ateş gidiyor.

Merhaba Sen window önce sadece window.close tarafından ateş onbeforeunload olay şu işlevi kullanabilirsiniz

window.onbeforeunload = function () {
   // stuff do do before the window is unloaded here.
}

ur probelm çözmek değilse bana bildirin