Sco*_*son 8 javascript html5 postmessage cross-domain
postMessage的文档意味着可以进行跨域消息传递.然而:
// When the popup has fully loaded, if not blocked by a popup blocker
Run Code Online (Sandbox Code Playgroud)
这不是一个非常清楚的说明如何实际做到这一点.
想象一下两个网站:
qc-a.nfshost.comqc-b.quadhome.com在父母:
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');
}
Run Code Online (Sandbox Code Playgroud)
并且,在孩子:
document.addEventListener('message', function(e) {
alert('Child got (from ' + e.origin + '): ' + e.data);
}, false);
window.opener.postMessage('Ready!', 'http://qc-a.nfshost.com');
Run Code Online (Sandbox Code Playgroud)
一切都无济于事.
救命?
目前,我看到两个问题.代码中的轻微错误和超时问题.
1)我在你的代码中看到的错误是你正在使用document.addEventListener.我认为正确的是window.addEventListener.它位于postMessage页面的示例中.
2)使用超时,您可以将子窗口postMessage设置为父窗口.然后父窗口将知道孩子何时准备好.
| 归档时间: |
|
| 查看次数: |
10626 次 |
| 最近记录: |