ดูเหมือนว่าจุดของwindow.postMessageคือการอนุญาตให้มีการสื่อสารที่ปลอดภัยระหว่าง windows / frames ที่โฮสต์บนโดเมนต่างๆ แต่ดูเหมือนจะไม่อนุญาตให้ใช้ใน Chrome
นี่คือสถานการณ์:
- ฝัง <iframe> (พร้อมกับ
src
โดเมน B * ) ในเพจบนโดเมน A - <iframe> จะกลายเป็นแท็ก <script> เป็นส่วนใหญ่ในตอนท้ายของการดำเนินการ ...
- ฉันเรียก window.postMessage ( some_data , page_on_A )
<iframe> นั้นแน่นอนที่สุดในบริบทของโดเมน B และฉันยืนยันว่าจาวาสคริปต์ที่ฝังอยู่ใน <iframe> นั้นทำงานได้อย่างถูกต้องและเรียกpostMessage
ด้วยค่าที่ถูกต้อง
ฉันได้รับข้อความแสดงข้อผิดพลาดนี้ใน Chrome:
ไม่สามารถโพสต์ข้อความเพื่อ ผู้รับมีต้นกำเนิดB
นี่คือรหัสที่ลงทะเบียนผู้ฟังเหตุการณ์ข้อความในหน้า A:
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
ฉันลองโทรwindow.postMessage(some_data, '*')
แล้วด้วย แต่สิ่งที่ทำคือระงับข้อผิดพลาด
ฉันพลาดจุดนี้ไปหรือเปล่าคือ window.postMessage (... ) ไม่ได้มีไว้สำหรับสิ่งนี้? หรือฉันแค่ทำมันผิดอย่างร้ายแรง?
* ข้อความประเภท Mime / html ซึ่งจะต้องคงอยู่