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加解密功能页面
Dec 12 Javascript
jQuery过滤选择器用法分析
Feb 10 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
Oct 20 Javascript
jquery实现网页的页面平滑滚动效果代码
Nov 02 Javascript
JavaScript面向对象程序设计教程
Mar 29 Javascript
深入理解JQuery循环绑定事件
Jun 02 Javascript
如何在Angular2中使用jQuery及其插件的方法
Feb 09 Javascript
Vue2单一事件管理组件通信
May 09 Javascript
详解基于angular-cli配置代理解决跨域请求问题
Jul 05 Javascript
JavaScript判断变量名是否存在数组中的实例
Dec 28 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
Nov 15 Javascript
Node.js API详解之 assert模块用法实例分析
May 26 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 生成饼图 三维饼图
2009/09/28 PHP
srcElement表格样式
2006/09/03 Javascript
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
python删除列表内容
2015/08/04 Python
PyQT实现多窗口切换
2018/04/20 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
python随机生成库faker库api实例详解
2019/11/28 Python
如何用python处理excel表格
2020/06/09 Python
Python爬取梨视频的示例
2021/01/29 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
2021/02/22 Python
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
总经理助理的八要求
2013/11/12 职场文书
硕士研究生求职自荐信范文
2014/03/11 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
真诚的求职信
2014/07/04 职场文书
电子工程求职信
2014/07/17 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书
《将心比心》教学反思
2016/02/23 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python