1、同域下的窗口通信
1》iframe
<iframe id="myframe" src="2.iframe.html"></iframe>
如果需要操作子页面,首先需要获取子页面的window对象:
oMyIframe.contentWindow -> 被iframe包含的页面的window对象
如果需要通过子页面操作父页面,可以通过parent获得父级页面的window对象:
eg:parenteg.document.body.style.background = 'green';
这里需要注意一下window、parent、top的区别:
当当前页面为最顶级页面时三者是相同的;
当当前页面为第二级页面时parent、top是相同的;
2》
window.open( , ) -------- 接受两个参数 参数一:新打开页面的地址 参数二:以何种方式打开
注意:此方法有返回值 返回值为新打开窗口的window对象,利用返回值可以完成对新窗口的dom操作
假如需要利用新打开窗口操作员页面,需要使用下面方法:
window.opener ---------- 通过window.open方法打开当前页面的窗口window
2、跨域下的窗口通信
注意:当本页面和包含页面不在同一个域名下的时候,这样操作就会有跨域操作安全限制问题。
postMessage : 可以通过这个方法给另外一个窗口发送信息
oMyIframe.contentWindow.postMessage(mesage, url); ------- 第一个参数:发送的数据 第二个参数:接收数据的域名{带上协议}
注意:接收消息的窗口的window对象.postMessage();
子页面可以通过message事件接受发送的消息:
window.addEventListener('message', function(ev) {}, false)
ev.data : 发送过来的数据
ev.origin : 判断发送数据页面的域名