Có vẻ như đ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 dường như không thực sự là cho phép trong Chrome.Bạn sử dụng window.postMessage trên các tên miền như thế nào?
Đây là kịch bản:
- Nhúng một <iframe> (với một
src
trên tên miền B *) trong một trang trên tên miền Một - Các <iframe> kết thúc lên được chủ yếu là một kịch bản < > thẻ, ở cuối quá trình thực hiện ...
- Tôi gọi window.postMessage (some_data, page_on_A)
Các <iframe> là chắc chắn nhất trong bối cảnh miền B, và tôi đã xác nhận rằng javascript nhúng trong đó <iframe> thực hiện đúng 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.
Dưới đây là đoạn code mà đăng ký một thông báo sự kiện người nghe trong trang trên A:
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
Tôi cũng đã cố gắng gọi window.postMessage(some_data, '*')
, nhưng tất cả điều đó không được ngăn chặn lỗi.
Tôi chỉ thiếu điểm ở đây, là window.postMessage (...) không có ý nghĩa cho điều này? Hay tôi chỉ làm điều đó sai lầm khủng khiếp?
* Mime-type text/html, nó phải còn lại.
Bạn có thể nhận thức điều này đã có, nhưng MDC có tuyệt vời tóm tắt về postMessage: https://developer.mozilla.org/en/DOM/window.postMessage Để thực hiện FF rõ ràng, nhưng có thể có một cái gì đó có giải thích tại sao nó không hoạt động. –