javascript父子页面通讯实例详解
2015-07-17 00:00
691 查看
本文实例讲述了javascript父子页面通讯的实现方法。分享给大家供大家参考。具体分析如下:
如果一个domain为 www.abc.com的页面内部包含一个name属性值为childFrame的iframe,并且这个iframe的domain为 static.abc.com。那么可以通过设置父页面的domain为abc.com,子页面的domain也为abc.com,然后实现父子页面通讯(我这里有点混淆父子页面和跨域的概念。
不采用上面的方法也是可以实现父子页面相互访问的。
方法是:在父页面用window.frames[0]或者window.frames["childFrame"],返回的是一个Window对象,然后就可以通过:
var childWindow = window.frames[0]; // 或者 window.frames["childFrame"] 或者直接childFrame 或者childFrame.window var childDoc = childWindow.contentDocument || childWindow.document;
利用childWindow可以访问执行子页面定义的函数,利用childDoc可以访问子页面的DOM节点。
而子页面要访问父页面,可以通过parent(Window对象),如果一个页面已经是顶级页面那么parent==self将返回true:
if(parent != self) { // 当前页面有父页面 // 调用父页面的函数 parent.parentFunc(); var parentDoc = parent.contentDocument || parent.document; // 访问父页面的DOM节点 }
www.abc.com父页面:
document.domain = 'abc.com'; var ifr = document.createElement('iframe'); ifr.src = 'http://static.abc.com/'; ifr.style.display = 'none'; document.body.appendChild(ifr); ifr.onload = function(){ var doc = ifr.contentDocument || ifr.contentWindow.document; // 在这里操纵子页面 alert(doc.getElementsByTagName("h1")[0].childNodes[0].nodeValue); };
www.static.abc.com子页面:
document.domain = 'abc.com';
希望本文所述对大家的javascript程序设计有所帮助。
相关文章推荐
- javascript字符串循环匹配实例分析
- 7月16日学习内容:把jsp页面转化为html页面
- 通过js动态清空、增加、删除、修改下拉框中的元素
- js获取json对象
- javaScript中Math对象的基本介绍
- JavaScript对象和数组
- 怎么在js里写html
- JS DOM编程艺术——显示缩略语列表—— JS学习笔记2015-7-16(第85天)
- JavaScript中判断数据类型
- JS笔记(执行环境,作用域)
- 《JavaScript设计模式与开发实践》读书笔记之命令模式
- js颜色拾取器
- js中动态加载js并且判断加载完成执行回调函数
- toString 方法
- javascript的typeof操作的返回值类型
- [javascript]一种兼容性比较好的简单拖拽
- 深入理解JavaScript系列(36):设计模式之中介者模式
- 深入理解JavaScript系列(37):设计模式之享元模式
- JavaScript数组
- 深入理解JavaScript系列(41):设计模式之模板方法