|
postMessage 是 HTML5 新方法,它可以实现跨域窗口之间通讯。到目前为止,只有 IE8+, Firefox 3, Opera 9, Chrome 3和 Safari 4 支持
该法用于不同域或浏览器不同线程之间的通信,如 Web Workers
举个简单的不同域iframe的例子:
tkxxd.com/a.html中代码
a.html中iframe了一个另一个域 tkxxd.net 下的b.html
- // 获取b.html的窗体对象
- var win = document.getElementById("iframe").contentWindow;
- // 向b.html发送消息
- win.postMessage({'a':'xxxxxxxx'}, 'http://tkxxd.net');
复制代码
window.postMessage(message, targetOrigin [, transfer ] )
这个函数传递二个参数,第一个参数即你要发送的数据,第二个参数主要是出于安全的考虑,一般填写允许通信的域名
tkxxd.net下的 b.html 接收消息代码:
- // 监听事件
- window.onmessage = function(e) {
- // 判断消息来源
- if (e.origin !== 'http://tkxxd.com') {
- return;
- }
- // 显示父窗口的消息
- document.getElementById("test").innerHTML = e.origin + " said: " + e.data;
- };
复制代码
同理,b.html向父窗口发消息
- window.parent.postMessage('test', 'http://tkxxd.com');
复制代码
a.html接收消息
- window.addEventListener('message', function(e) {
- alert(e.data);
- },false);
复制代码
参考: http://dev.w3.org/html5/postmsg/
|
|