使用元素可以在当前页面嵌入其他页面。
如果两个页面是不同源的,那么父子窗口无法通信,也就是无法拿到对方的DOM。
代码如下:[JavaScript] 纯文本查看 复制代码document.getElementById("theIframe").contentWindow.document
如果父子窗口非同源,那么上面代码会报错;对于window.open方法打开的窗口也是如此。
如果两个窗口一级域名相同,那么只要将document.domain属性值设置为根域名即可:[JavaScript] 纯文本查看 复制代码document.domain = 'softwhy.com';
关于document.domain可以参阅JavaScript 跨域访问cookie一章节。
对于根域名不同页面,可以使用如下两种方式解决跨域窗口的通信问题:
一.通过锚点传递信息:
关于锚点可以参阅HTML 锚点定位一章节,以如下链接为例子:[HTML] 纯文本查看 复制代码http://www.softwhy.com/antzone.html#ts
只改变锚点不会不会重新刷新网页,父窗口可以通过这个锚点来传递信息:[JavaScript] 纯文本查看 复制代码let src = iframeURL + "#" + data;
document.getElementById("theiframe").src = src;
这样我们就将数据通过data传递给了iframe子页面。
然后通过hashchange事件来进行监听锚点信息的变化,代码如下:[JavaScript] 纯文本查看 复制代码window.onhashchange = handler;