javascript父、子页面交互技巧总结


Posted in Javascript onAugust 08, 2014

帧用来存放子页面,既可以是iframe,又可以是frameset。window对象是全局对象,页面上的一切函数和对象都在它的作用域里。
1、parent代表父窗口、如果父窗口又存在若干层嵌套,则top代表顶级父窗口。
self代表窗口自身。

if(self==top){//}判断窗口是否处于顶级 
if(self==parent){}//也可以

2.1、父页面访问子页面元素。思路是子页面的元素都在其window.document对象里面,先获取它然后就好说了。
帧最好设置name属性,这样操作最方便。如

<iframe name="test" src="child.html"></iframe>

假如要获取child.html里面id为'menu'的元素,则可以这样写:

window.frames["test"].document.getElementById('menu'); 
//由于所有的函数都存放在window对象里面,可去掉开头的window: 
frames["test"].document.getElementById('menu'); 
//在浏览器中,帧的name属性被默认等同于子页面的window对象,因此可以进一步简写: 
test.document.getElementById('menu');

2.2 父页面访问子页面函数或对象。子页面的函数和对象都在其window对象里,同上,关键是获取该对象。

//假如child.html定义了showMesg函数,需要在父中调用,则这样写 
window.frames['test'].showMesg(); 
//简写形式 
test.showMesg(); 
//同理,对象也是如此访问 
alert(test.person);

2.3 其他获取document的方式。
先使用'document.getElementById()'或'document.getElementsByTagName()'把帧作为document下的Element获取,然后访问其属性contentDocument/contentWindow (iframe、frame特有),其中第一个ie7-不支持,第二个chrome不支持.

<iframe id="testId" src="child.html"></iframe> 
//====== 
var doc=document.getElementById('testId'); 
//或者 
var doc=document.getElementsByTagName('iframe')[0]; 
然后 
var winOrdoc=doc.contentDocument||doc.contentWindow;//二选一 
if(winOrdoc.document)winOrdoc=winOrdoc.document; 
winOrdoc.getElementById('menu'); 
//如果需要window对象,则这样写: 
if(winOrdoc.defaultView)winOrdoc=winOrdoc.defaultView;

3.1子页面访问父页面元素。思路同2.1,先获取父窗口window.document对象

parent.window.document.getElementById('parentMenu'); 
//简写 
parent.document.getElementById('parentMenu');

3.2,子页面访问父页面函数或对象。思路同2.2,先获取父窗口window对象。

parent.parentFunction();

最后提一下js的同源策略,即位于A网站的js代码不允许访问位于B网站的内容,即使该代码来源于B网站。假如帧是其它网站的页面,那么按上述方法互相访问时,浏览器应该会提示:'没有权限'错误。

Javascript 相关文章推荐
JavaScript 节点操作 以及DOMDocument属性和方法
Dec 06 Javascript
js模拟弹出效果代码修正版
Aug 07 Javascript
JavaScript通过RegExp实现客户端验证处理程序
May 07 Javascript
javascript 循环调用示例介绍
Nov 20 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
Feb 23 Javascript
JavaScript实现将UPC转换成ISBN的方法
May 26 Javascript
关于input全选反选恶心的异常情况
Jul 24 Javascript
JS搜狐面试题分析
Dec 16 Javascript
bootstrap datetimepicker控件位置异常的解决方法
Nov 23 Javascript
vue实现div拖拽互换位置
Jul 29 Javascript
在vue项目实现一个ctrl+f的搜索功能
Feb 28 Javascript
VUE递归树形实现多级列表
Jul 15 Vue.js
jQuery的animate函数学习记录
Aug 08 #Javascript
jQuery中get和post方法传值测试及注意事项
Aug 08 #Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
Aug 08 #Javascript
js事件监听机制(事件捕获)总结
Aug 08 #Javascript
使用jquery.qrcode生成彩色二维码实例
Aug 08 #Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
Aug 08 #Javascript
js调试工具console.log()方法查看js代码的执行情况
Aug 08 #Javascript
You might like
ThinkPHP视图查询详解
2014/06/30 PHP
Symfony查询方法实例小结
2017/06/28 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
jquery常用函数与方法汇总
2015/09/01 Javascript
node.js require() 源码解读
2015/12/13 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
浅谈React组件之性能优化
2018/03/02 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
Python聚类算法之DBSACN实例分析
2015/11/20 Python
python使用tkinter实现简单计算器
2018/01/30 Python
浅谈python可视化包Bokeh
2018/02/07 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
python将音频进行变速的操作方法
2020/04/08 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
二手房购房意向书范本
2014/04/01 职场文书
计算机实训报告范文
2014/11/05 职场文书
作弊检讨书范文
2015/05/06 职场文书
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
Python中time标准库的使用教程
2022/04/13 Python
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android
CSS控制继承中的height能变为可继承吗
2022/06/10 HTML / CSS