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 相关文章推荐
JS文本框不能输入空格验证方法
Mar 19 Javascript
JS实现Enter键跳转及控件获得焦点
Aug 12 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
Feb 25 Javascript
js动态生成Html元素实现Post操作(createElement)
Sep 14 Javascript
QQ登录背景闪动效果附效果演示源码下载
Sep 22 Javascript
jQuery实现Tab选项卡切换效果简单演示
Nov 23 Javascript
浅谈JS验证表单文本域输入空格的问题
Feb 14 Javascript
easy ui datagrid 从编辑框中获取值的方法
Feb 22 Javascript
详解SPA中前端路由基本原理与实现方式
Sep 12 Javascript
Ant Design moment对象和字符串之间的相互转化教程
Oct 27 Javascript
使用webpack和rollup打包组件库的方法
Feb 25 Javascript
JS前端监控采集用户行为的N种姿势
Jul 23 Javascript
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
PHP魔术方法的使用示例
2015/06/23 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
javascript获取当前ip的代码
2009/05/10 Javascript
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
iView框架问题整理小结
2018/10/16 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
详解vue页面首次加载缓慢原因及解决方案
2019/11/06 Javascript
Python subprocess模块学习总结
2014/03/13 Python
Python解决鸡兔同笼问题的方法
2014/12/20 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
给我一面国旗 python帮你实现
2019/09/30 Python
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
《匆匆》教学反思
2014/02/22 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
房屋出售协议书
2014/04/10 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
基层党支部整改方案
2014/10/25 职场文书
闪闪红星观后感
2015/06/08 职场文书
病房管理制度范本
2015/08/06 职场文书
学校2016年九九重阳节活动总结
2016/04/01 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android