Có vẻ như quan điểm của window.postMessage là cho phép giao tiếp an toàn giữa các cửa sổ / khung được lưu trữ trên các miền khác nhau, nhưng nó thực sự không cho phép điều đó trong Chrome.
Đây là tình huống:
- Nhúng <iframe> (với
src
tên miền B * ) vào một trang trên tên miền A - <iframe> kết thúc phần lớn là một thẻ <script>, ở phần cuối của việc thực thi ...
- Tôi gọi window.postMessage ( some_data , page_on_A )
<iframe> chắc chắn nhất trong ngữ cảnh của miền B và tôi đã xác nhận rằng javascript nhúng trong <iframe> đó thực thi đúng cách và gọi postMessage
với các giá trị chính xác.
Tôi nhận được thông báo lỗi này trong Chrome:
Không thể gửi thông điệp tới Một . Người nhận có nguồn gốc B .
Đây là mã đăng ký trình xử lý sự kiện thông báo trong trang trên A:
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
Tôi cũng đã thử gọi window.postMessage(some_data, '*')
, nhưng tất cả những gì làm được là không xảy ra lỗi.
Tôi chỉ thiếu điểm ở đây, có phải window.postMessage (...) không dành cho điều này? Hay tôi chỉ làm sai một cách khủng khiếp?
* Văn bản / html kiểu mime, mà nó phải được giữ nguyên.