Dalam JavaScript, kapan harus menggunakan window.opener
/ window.parent
/ window.top
?
Jawaban:
window.opener
mengacu pada jendela yang dipanggil window.open( ... )
untuk membuka jendela tempat jendela itu dipanggilwindow.parent
mengacu pada induk dari jendela di <frame>
atau<iframe>
window.top
merujuk ke jendela paling atas dari jendela yang bersarang di satu atau beberapa lapisan <iframe>
sub-jendelaItu akan menjadi null
(atau mungkin undefined
) ketika mereka tidak relevan dengan situasi jendela rujukan. ("Jendela rujukan" berarti jendela yang konteksnya kode JavaScript dijalankan.)
window.open()
setelah halaman mengirimkan. Sekarang jendela anak ini membuka jendela anak lain dengan window.open()
penutup yang sama . Sekarang ketika saya mengirimkan anak kedua saya (anak pertama tidak ada lagi), saya ingin mengakses elemen halaman halaman utama saya. Apakah ini mungkin dari anak kedua ketika yang pertama tidak ada lagi?
window.opener.opener
sebelum halaman perantara menghilang.
Saya pikir Anda perlu menambahkan beberapa konteks pada pertanyaan Anda. Namun, informasi dasar tentang hal-hal ini dapat ditemukan di sini:
window.opener
https://developer.mozilla.org/en-US/docs/Web/API/Window.opener
Saya sering menggunakan window.opener saat membuka jendela baru yang bertindak sebagai dialog yang membutuhkan masukan pengguna, dan perlu meneruskan informasi kembali ke jendela utama. Namun hal ini dibatasi oleh kebijakan asal, jadi Anda perlu memastikan konten dari dialog dan jendela pembuka dimuat dari asal yang sama.
window.parent
https://developer.mozilla.org/en-US/docs/Web/API/Window.parent
Saya telah menggunakan ini sebagian besar saat bekerja dengan IFrames yang perlu berkomunikasi dengan objek jendela yang berisi mereka.
window.top
https://developer.mozilla.org/en-US/docs/Web/API/Window.top
Ini berguna untuk memastikan Anda berinteraksi dengan jendela browser tingkat atas. Anda dapat menggunakannya untuk mencegah situs lain melakukan iframing pada situs Anda, antara lain.
Jika Anda menambahkan lebih banyak detail pada pertanyaan Anda, saya dapat memberikan contoh lain yang lebih relevan.
PEMBARUAN:
Ada beberapa cara untuk menangani situasi Anda.
Anda memiliki struktur berikut:
Ketika Dialog 1 menjalankan kode untuk membuka Dialog 2, setelah membuat Dialog 2, minta dialog 1 menyetel properti pada Dialog 2 yang mereferensikan pembuka Dialog1.
Jadi jika "childwindow" adalah variabel Anda untuk objek jendela dialog 2, dan "jendela" adalah variabel untuk objek jendela Dialog 1. Setelah membuka dialog 2, tetapi sebelum menutup dialog 1 buatlah tugas seperti ini:
childwindow.appMainWindow = window.opener
Setelah membuat tugas di atas, tutup dialog 1. Kemudian dari kode yang berjalan di dalam dialog2, Anda harus dapat menggunakan
window.appMainWindow
referensi jendela utama, objek jendela.
Semoga ini membantu.
window.open()
setelah halaman mengirimkan. Sekarang jendela anak ini membuka jendela anak lain dengan window.open()
penutup yang sama . Sekarang ketika saya mengirimkan anak kedua saya (anak pertama tidak ada lagi), saya ingin mengakses elemen halaman halaman utama saya. Apakah ini mungkin dari anak kedua ketika yang pertama tidak ada lagi?
top, parent, opener (serta window, self, dan iframe) adalah objek jendela.
window.opener
-> mengembalikan jendela yang membuka atau meluncurkan jendela popup saat ini.window.top
-> mengembalikan jendela paling atas, jika Anda menggunakan bingkai, ini adalah jendela frameset, jika tidak menggunakan bingkai, ini sama dengan jendela atau diri.window.parent
-> mengembalikan bingkai induk dari bingkai atau iframe saat ini. Bingkai induk dapat berupa jendela rangkaian bingkai atau bingkai lain jika Anda memiliki bingkai bersarang. Jika tidak menggunakan bingkai, induknya sama dengan jendela saat ini atau diri sendiriketika Anda berurusan dengan popup window.opener memainkan peran penting, karena kita harus berurusan dengan bidang halaman induk dan juga halaman anak, ketika kita harus menggunakan nilai pada halaman induk kita dapat menggunakan window.opener atau kita ingin beberapa data pada jendela anak atau jendela popup pada saat memuat, maka kita dapat mengatur nilai lagi menggunakan window.opener