2008-10-21 34 views
5

Bazı üyeler için sitemden yeni bir tarayıcı penceresi açıyorum. Ancak, bazıları daha sonra kapatabilir veya başlangıçta açılmamış olabilir.Javascript ile bir tarayıcı penceresinin açık olduğunu nasıl doğrularım?

Her sayfada, başka bir tarayıcı penceresinin açık olup olmadığını ve yeniden açmak için bir bağlantı sağlamak üzere çalışıp çalışmadığını doğrulamak üzere çalıştırılabilecek oldukça basit bir Javascript pasajı var mı?

[açıklama:] Kontrol edilecek kod pencerenin açık olması diğer sayfalarda çalıştırılacak - sadece aynı pencerede değil, aynı pencerede açılmış. Oturum açan bir kullanıcı düşünün, pencereyi açın (açmaya çalışır) ve daha sonra 2. pencereyi kapatmadan önce (ya da hiç açılmadan) aynı sekme/pencerede (ya da başkalarında) gezinirler. Pencerenin kapatıldıktan/açıldıktan sonraki ilk denemesinden bir süre sonra kapatıldığını fark etmek için, javascript'in window.open() penceresinden dönüşünü (popup_window_handle.closed ile) kolayca kullanabileceğinizden veya gerçekten mümkün olduğundan emin değilim .

cevap

4

Bu excellent, comprehensive article("pop-up pencereler neredeyse tamamen kontrol") javascript pop-up pencereler ile ilgili tüm sorularınıza cevap olmalıdır.

"JavaScript 1.1 de özellik. Bu özelliği kullanarak, bir pencere açıldı ve sonradan kapatılmış olup olmadığını tespit etmek mümkündür. Biz açıcı penceresine eğer doğrudan bir sayfayı yüklemek için kullanabilir kapalı pencere tanıtıldı hala açık JavaScript 1.1 tarayıcıları etkin:"

<script language="JavaScript"><!-- 
function open_main(page) { 
    window_handle = window.open(page,'main'); 
    return false; 
} 
//--></script> 

<script language="JavaScript1.1"><!-- 
function open_main(page) { 
    if (opener && !opener.closed) { 
     opener.location.href = page; 
    } 
    else { 
     window_handle = window.open(page,'main'); 
    } 
    return false; 
} 
//--></script> 

<a href="example.htm" onClick="return open_main('example.htm')">example.htm</a> 

Ekleme:

: Sen pencere Popup adının bu şekilde bakarak geri başka bir sayfaya ele alabilirsiniz
window_handle = window.open(page,'myPopupName'); 

Sizin durumunuzda, tüm uygulama boyunca açılan pencerelerin tüm isimlerini oluşturmanın tutarlı bir yolunu düşünmeniz gerektiğini düşünüyorum.

1
var myWin = window.open(...); 

if (myWin.closed) 
{ 
    myWin = window.open(...); 
} 
+0

'myWin' değişkeni ne kadar süreyle kullanılabilir? Sadece aynı sayfada iken? –

+0

@Topbit: Evet, ancak pencerenin tutamacını bu şekilde açılır pencerenin ismine bakarak şu şekilde alabilirsiniz: window_handle = window.open (page, 'myPopupName'); - Bağlantılı makaleyi yanıtımı (splattne) okumanızı tavsiye ederim. – splattne

0

Her pop-up engelleyicinin farklı bir davranışı olduğundan, bunu denetlemenin evrensel bir yolu yoktur. Örneğin, Opera açılır pencereyi göstermeyecek, ancak dul.kapalı sahne arkasındaki gibi geri döndürülecektir. Opera, kullanıcının yine de onu görmek istemesi durumunda engellenen pencerenin gölge kopyasını tutacaktır.

İlgili konular