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 querySelector和getElementById通过id获取元素的区别
Apr 20 Javascript
innerHTML与jquery里的html()区别介绍
Oct 12 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
Jun 08 Javascript
仿百度联盟对联广告实现代码
Aug 30 Javascript
JavaScript实现按Ctrl键打开新页面
Sep 04 Javascript
JQuery中serialize()用法实例分析
Feb 06 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
Sep 30 Javascript
jQuery弹出窗口简单实现代码
Mar 09 Javascript
angularjs通过过滤器返回超链接的方法
Oct 26 Javascript
vue中音频wavesurfer.js的使用方法
Feb 20 Vue.js
10分钟学会js处理json的常用方法
Dec 06 Javascript
一文搞懂redux在react中的初步用法
Jun 09 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缓存的详解
2013/05/15 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
php代码架构的八点注意事项
2016/01/25 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
jQuery 使用手册(一)
2009/09/23 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
caller和callee的区别介绍及演示结果
2013/03/10 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
js实现车辆管理系统
2020/08/26 Javascript
python利用urllib实现爬取京东网站商品图片的爬虫实例
2017/08/24 Python
python中的set实现不重复的排序原理
2018/01/24 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
Python matplotlib画曲线例题解析
2020/02/07 Python
Python魔术方法专题
2020/06/19 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
塔吉特百货公司官网:Target
2017/04/27 全球购物
机械专业个人求职自荐信格式
2013/09/21 职场文书
师范生自我鉴定范文
2013/10/05 职场文书
财务会计人员岗位职责
2013/11/30 职场文书
公司授权委托书范文
2014/08/02 职场文书
护理医院见习报告
2014/11/03 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
给老婆道歉的话
2015/01/20 职场文书
停水通知
2015/04/16 职场文书
python ConfigParser库的使用及遇到的坑
2022/02/12 Python