Tài liệu cho postMessage ngụ ý rằng việc nhắn tin giữa nhiều miền là có thể. Tuy nhiên:Tôi làm cách nào để thực hiện postMessage đa miền?
// When the popup has fully loaded, if not blocked by a popup blocker
Đó không phải là một lưu ý rất rõ ràng về cách để thực sự làm điều đó.
Hãy tưởng tượng hai trang web:
- [Chánh] lưu trữ trên
qc-a.nfshost.com
- [Child] lưu trữ trên
qc-b.quadhome.com
Trong phụ huynh:
document.addEventListener('message', function(e) {
alert('Parent got (from ' + e.origin + '): ' + e.data);
e.source.postMessage('Round-tripped!', 'http://qc-b.quadhome.com');
}, false);
function go() {
var w = window.open('http://qc-b.quadhome.com', 'test');
/* This doesn't work because same-origin policy prevents knowing when
the opened window is ready. */
w.postMessage('Vain attempt.', 'http://qc-b.quadhome.com');
}
Và, trong con:
document.addEventListener('message', function(e) {
alert('Child got (from ' + e.origin + '): ' + e.data);
}, false);
window.opener.postMessage('Ready!', 'http://qc-a.nfshost.com');
Tất cả không có kết quả.
Trợ giúp?
Tóm lại, tôi là một thằng ngốc. Đã thay thế 'tài liệu' bằng' cửa sổ' và cuộc gọi lại đã sẵn sàng hoạt động qua 'window.opener.postMessage'. Cảm ơn bạn! –
Xảy ra với điều tốt nhất của chúng tôi :) –