检测浏览器支持
不同版本的浏览器对postMessage的支持可能不同,因此使用前需要检测。在chrome浏览器中的一种比较简单的方法就是直接在开发者工具中输入window.postMessage,如果结果如下,说明支持
使用postMessage 发送消息
postMessage的语法 :window.postMessage(data,url)
data:发送的消息,通常为字符串
url:指定允许通信的域名。注意,不是接受消息的目标域名。使用该参数的主要作用是出于安全考虑,接受消息的窗口可以根据此消息来判断信息来源是否可靠,避免恶意攻击。如果不对访问的域进行判断可以使用‘*’。
跨窗口消息传递实例
1.目标:使用框架实现左边发送消息,右边显示发送的消息
2.效果图:
3.代码实现
1)index.html
跨框架发送消息
主页面布局比较简单,主要是使用了frame框架,引入左右两个html文件
2)left.html
left
left.html的布局也是很简单的,就一个输入框和发送按钮,主要是调用了window.parent.postMessage向父窗口传递消息
3)right.html
left 这是框架的右部,用于接收来自左侧的消息
right.html主要是接受消息的,需要监听消息事件,并处理。
如果使用addEventListener方法,则需要监听message事件
window.addEventListener("message",messageHandle,false);
如果使用attachEvent方法,则需要监听onmessage事件
window.attachEvent("onmessage",messageHandle);