Window.opener / window.parent / window.top ne zaman kullanılır


Yanıtlar:


167
  • window.openerçağrıldığı pencereyi window.open( ... )açmak için çağrılan pencereyi ifade eder
  • window.parent<frame>veya içindeki bir pencerenin üstünü ifade eder<iframe>
  • window.topbir veya daha fazla <iframe>alt pencere katmanına yerleştirilmiş bir pencereden en üstteki pencereyi ifade eder

Bunlar , 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.)


1
Yanıt için teşekkürler @pointy. 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?
Sriram

4
@Sriram: Sorunuza bu tür bilgiler eklemeniz gerekir, böylece insanlar gerçekten çözmeye çalıştığınız sorunu bilirler .
josh3736

5
@Sriram window.opener.opener, ara sayfa kaybolmadan önce kapmanız gerekecek .
Pointy

24

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:

  • Ana pencere
    • Diyalog 1
      • İletişim Kutusu 2 İletişim Kutusu 1 Tarafından Açıldı

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.appMainWindowana pencereye, pencere nesnesine başvurmak için kullanabilmeniz gerekir .

Bu yardımcı olur umarım.


Yanıt için teşekkürler @ Mark. 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?
Sriram

güncellenmiş cevap. @ josh3736 - Bu yorumun nasıl yardımcı olduğunu anlamıyorum. Kimseye w3schools sertifikası almasını tavsiye etmiyorum. Buradaki herkes window.opener, window.top ve window.parent temel tanımlarının nasıl google'da bulunacağını ve öğrenileceğini biliyor. Yukarıdaki bağlantıları kullanın veya yeni referanslar bulun, ancak burada bu özellikleri basitçe tanımlayan bilgileri çoğaltmanın neredeyse hiçbir anlamı yoktur.
Mark At Ramp51

Açıklama gerçekten yardımcı oldu @ MarkAtRamp51 Teşekkürler!
Sriram

3
Bağlantı w3schools'ta neyin yanlış olduğunu - çok detaylı olarak - açıklıyor. Önemli olan, yetkili bir bilgi kaynağı olarak w3schools'u tanıtmaktan veya bunlara bağlanmaktan (ve böylece Google PageRank'i yükseltmekten) kaçınmaktır. W3S kötü bilgi yayar ve sorunun bir kısmı, pek çok insanın bu kötü bilgiye bağlanmasıdır. MDN gibi daha güvenilir bir bilgi kaynağına bağlanmak daha iyidir .
josh3736

5

top, parent, opener (ayrıca window, self ve iframe) tüm pencere nesneleridir.

  1. window.opener ->, geçerli açılır pencereyi açan veya başlatan pencereyi döndürür.
  2. 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.
  3. 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 veya

1

pop-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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.