Situs web di iframe tidak terletak di domain yang sama , tetapi keduanya milik saya, dan saya ingin berkomunikasi antara iframe
situs induk dan. Apa itu mungkin?
javascript
html
ajax
iframe
Danny Fox
sumber
sumber
window.onmesage = function()...
. Di iframe:window.top.postMessage('hello', '*')
file://C:/Windows/system32/whatever
di halaman web dan membuatnya langsung ke folder sistem pengguna. Saat ini sebagian besar browser mengabaikan klik pada tautan seperti itu. Jalankan server web dan akses kode Anda melalui itu dan Anda akan melihat kesalahan muncul.window.frames[index]
untuk mendapatkan bingkai anak (<iframe>, <object>, <frame>
), setara dengangetElementsByTagName("iframe")[index].contentWindow
. Untuk mendapatkan Objek Jendela Induk dari IFrames, lebih baik menggunakanwindow.parent
, karenawindow.top
mewakili Jendela Paling Banyak IndukItu harus di sini, karena jawaban yang diterima dari 2012
Pada 2018 dan browser modern, Anda dapat mengirim acara khusus dari iframe ke jendela induk.
iframe:
induk:
PS: Tentu saja, Anda bisa mengirim acara dengan arah yang berlawanan dengan cara yang sama.
sumber
dispatchEvent
didukung di semua browser utama. IE9 adalah versi pertama yang masuk, jadi sebagian besar OS sekarang bekerja dengannya. caniuse.com/#search=dispatchEventPerpustakaan ini mendukung HTML5 postMessage dan browser lama dengan mengubah ukuran + hash https://github.com/ternarylabs/porthole
Sunting: Sekarang pada tahun 2014, penggunaan IE6 / 7 cukup rendah, IE8 dan di atas semua dukungan
postMessage
jadi saya sekarang menyarankan untuk hanya menggunakan itu.https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage
sumber
yang
window.top
properti harus dapat memberikan apa yang Anda butuhkan.Misalnya
Lihat http://cross-browser.com/talk/inter-frame_comm.html
sumber
Anda juga bisa menggunakan
postMessage(message, '*')
;sumber
Gunakan
event.source.window.postMessage
untuk mengirim kembali ke pengirim.Dari Iframe
Kemudian dari orangtua katakan kembali.
sumber