JavaScript'te window.opener
/ window.parent
/ ne zaman kullanılır window.top
?
Yanıtlar:
window.opener
çağrıldığı pencereyi window.open( ... )
açmak için çağrılan pencereyi ifade ederwindow.parent
<frame>
veya içindeki bir pencerenin üstünü ifade eder<iframe>
window.top
bir veya daha fazla <iframe>
alt pencere katmanına yerleştirilmiş bir pencereden en üstteki pencereyi ifade ederBunlar , yönlendiren pencerenin durumuyla alakalı olmadığında null
(veya belki undefined
) olacaktır . ("Yönlendiren pencere", bağlamında JavaScript kodunun çalıştırıldığı pencere anlamına gelir.)
window.open()
Sayfayı gönderdikten sonra kullanan bir çocuğu açan bir ana sayfam var . Şimdi bu alt pencere aynı window.open()
kapanış kendiliğiyle başka bir alt pencere açar . Şimdi ikinci çocuğumu gönderdiğimde (birinci çocuk artık yok), ana sayfamın sayfa öğelerine erişmek istiyorum. Bu, birinci çocuk artık mevcut olmadığında ikinci çocuktan mümkün müdür?
window.opener.opener
, ara sayfa kaybolmadan önce kapmanız gerekecek .
Sorunuza biraz bağlam eklemeniz gerektiğini düşünüyorum. Bununla birlikte, bunlarla ilgili temel bilgiler burada bulunabilir:
window.opener
https://developer.mozilla.org/en-US/docs/Web/API/Window.opener
Window.opener'ı çoğunlukla, kullanıcı girişi gerektiren ve bilgileri ana pencereye geri göndermesi gereken bir iletişim kutusu görevi gören yeni bir pencere açarken kullandım. Ancak bu, menşe politikasıyla sınırlıdır, bu nedenle hem iletişim kutusundaki içeriğin hem de açıcı pencerenin aynı kaynaktan yüklendiğinden emin olmanız gerekir.
window.parent
https://developer.mozilla.org/en-US/docs/Web/API/Window.parent
Bunu çoğunlukla, onları içeren pencere nesnesiyle iletişim kurması gereken IFrame'lerle çalışırken kullandım.
window.top
https://developer.mozilla.org/en-US/docs/Web/API/Window.top
Bu, üst düzey tarayıcı penceresiyle etkileşim kurduğunuzdan emin olmak için kullanışlıdır. Diğer şeylerin yanı sıra, başka bir sitenin web sitenizi iç çerçeveye yerleştirmesini önlemek için kullanabilirsiniz.
Sorunuza biraz daha ayrıntı eklerseniz, daha alakalı başka örnekler verebilirim.
GÜNCELLEME:
Durumunuzu idare etmenin birkaç yolu vardır.
Aşağıdaki yapıya sahipsiniz:
Dialog 1, Dialog 2'yi açmak için kodu çalıştırdığında, Dialog 2'yi oluşturduktan sonra, dialog 1'in Dialog1 açıcısına referans veren Dialog 2'de bir özellik ayarlamasını sağlayın.
Bu nedenle, "alt pencere", iletişim kutusu 2 pencere nesnesi için değişkense ve "pencere", Diyalog 1 pencere nesnesi için değişkense. İletişim kutusu 2'yi açtıktan sonra, ancak iletişim kutusu 1'i kapatmadan önce şuna benzer bir atama yapın:
childwindow.appMainWindow = window.opener
Yukarıdaki atamayı yaptıktan sonra, iletişim kutusu 1'i kapatın. Ardından, iletişim kutusu2 içinde çalışan koddan, window.appMainWindow
ana pencereye, pencere nesnesine başvurmak için kullanabilmeniz gerekir
.
Bu yardımcı olur umarım.
window.open()
Sayfayı gönderdikten sonra kullanan bir çocuğu açan bir ana sayfam var . Şimdi bu alt pencere aynı window.open()
kapanış kendiliğiyle başka bir alt pencere açar . Şimdi ikinci çocuğumu gönderdiğimde (birinci çocuk artık yok), ana sayfamın sayfa öğelerine erişmek istiyorum. Bu, birinci çocukta artık yokken ikinci çocuktan mümkün müdür?
top, parent, opener (ayrıca window, self ve iframe) tüm pencere nesneleridir.
window.opener
->, geçerli açılır pencereyi açan veya başlatan pencereyi döndürür.window.top
-> en üstteki pencereyi döndürür, çerçeve kullanıyorsanız, bu çerçeve kümesi penceresidir, çerçeve kullanmıyorsanız, pencere veya kendisiyle aynıdır.window.parent
-> geçerli çerçevenin veya iframe'in üst çerçevesini döndürür. Üst çerçeve, çerçeve kümesi penceresi veya iç içe çerçeveleriniz varsa başka bir çerçeve olabilir. Çerçeve kullanmıyorsanız, ebeveyn mevcut pencere ile aynıdır veyapop-up'larla uğraşırken window.opener önemli bir rol oynar, çünkü alt sayfanın yanı sıra üst sayfanın alanlarıyla da ilgilenmek zorundayız, üst sayfadaki değerleri kullanmak zorunda olduğumuzda window.opener kullanabiliriz veya bazı veriler istiyoruz yükleme sırasında alt pencerede veya açılır pencerede, ardından tekrar window.opener kullanarak değerleri ayarlayabiliriz