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单元测试ABC
Apr 12 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
May 24 Javascript
js中传递特殊字符(+,&amp;)的方法
Jan 16 Javascript
JavaScript学习笔记之DOM基础 2.4
Aug 14 Javascript
学习使用bootstrap基本控件(table、form、button)
Apr 12 Javascript
9个让JavaScript调试更简单的Console命令
Nov 14 Javascript
解决JS外部文件中文注释出现乱码问题
Jul 09 Javascript
JS验证码实现代码
Sep 14 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
Mar 05 Javascript
vue 做移动端微信公众号采坑经验记录
Apr 26 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
Apr 17 Javascript
Vuex的实战使用详解
Oct 31 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出现内存位置访问无效错误问题解决方法
2014/08/16 PHP
php rsa加密解密使用详解
2015/01/14 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
php实现学生管理系统
2020/03/21 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
javascript实现简易计算器
2017/02/01 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
2020/01/02 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
Python实现数据库编程方法详解
2015/06/09 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
法国珠宝店:CLEOR
2017/01/29 全球购物
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
波兰补充商店:Muscle Power
2018/10/29 全球购物
大学生职业生涯规划范文
2014/01/22 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
2015年党员创先争优公开承诺书
2015/04/27 职场文书
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫
Li list-style-image 图片垂直居中实现方法
2023/05/21 HTML / CSS