Sepertinya inti dari window.postMessage adalah untuk memungkinkan komunikasi yang aman antara windows / frame yang dihosting di domain yang berbeda, tetapi tampaknya tidak mengizinkannya di Chrome.
Berikut skenarionya:
- Sematkan <iframe> (dengan
src
di domain B * ) di halaman di domain A - <iframe> akhirnya menjadi tag <script>, yang akhirnya dieksekusi ...
- Saya memanggil window.postMessage ( some_data , page_on_A )
<iframe> paling pasti dalam konteks domain B, dan saya telah mengonfirmasi bahwa javascript yang disematkan di <iframe> itu dijalankan dengan benar dan memanggil postMessage
dengan nilai yang benar.
Saya mendapatkan pesan kesalahan ini di Chrome:
Tidak dapat mengirim pesan ke A . Penerima berawal B .
Berikut kode yang mendaftarkan pendengar peristiwa pesan di halaman di A:
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
Saya juga mencoba menelepon window.postMessage(some_data, '*')
, tetapi yang dilakukannya hanyalah menekan kesalahan.
Apakah saya hanya melewatkan intinya di sini, apakah window.postMessage (...) tidak dimaksudkan untuk ini? Atau apakah saya melakukannya dengan sangat salah?
* Teks / html tipe pantomim, yang harus tetap ada.