Javascript iframe交互并兼容各种浏览器的解决方法


Posted in Javascript onJuly 12, 2016

在Web前端开发中,我们经常会用到iframe这个控件。

但是这个控在内、外交互时,往往各个浏览器所用的关键字不同,很是麻烦,为了能够得到子iframe中的window对象,各家浏览器有着各家的指定,有的是window,有的是contentWindow等等也许还有我们不知道的。

但是从子页面访问父层页面,其本上大家都是window.parent就可以了。

那么通过这个特征,我们可以在子页面中,把自身的window对象传递给父页面就可以了,这样父页面就很轻松的访问子页面,再也不用靠虑如何从iframe对象上得到window对象了。

二话不说,我们先看代码:

父页面代码:

window.iframeWindow = null;
function frameReady(subWindow){
window.iframeWindow = subWindow; //赋值
}; 
<iframe src = "xx" ></iframe>

子页面代码:

$(function(){
window.parent.frameReady(window);
});

通过上面简单的代码,就可以在父页面中访问iframeWindow对象,直接得到了子页面的window对象,非常无脑也非常好用。

如果我有多个iframe该怎么办呢?

这种情况会稍微复杂一点,但是没关系。我们想继续使用上面的方案,就分析一下现状:

1.我们应该会需要一个类似iframeWindows的集合对象,用于管理所有子页面的window对象。

2.每个子页面在调用parent.frameReady时,必须靠诉父页面一个唯一名称,使得我们可以在父页面中对各个iframe进行精确访问

那么这下就简单了,子页面要做的事,无非就是一个名称、编号啥的,我们来看代码

window.subWindowName = "HelloWorldWindow";
$(function(){
window.parent.frameReady(window.subWindowName, window);
});

那么父页面要做的事就是重构frameReady并增加一个参数

window.iframeWindows = {}; //这里变成了一个对象
function frameReady(name, window){
window.iframeWindows[name] = window;
};
function getSubWindow(name){
return window.iframeWindows[name];
}

总结:

通过这种方案构建的页面存在以下优点:

1.父子页面的交互仅依赖于parent关键字(而以前的方式中,不仅依赖parent,还要依赖contentWindow、window等其它不确定关键字,最重要的是parent的支持还是非常好的)

2.window对象统一化,减少了每次使用时再请求的引用链,提高了运行的速度

3.最重要的一点:就是代码写起来轻松多了。

以上所述是小编给大家介绍的Javascript iframe交互并兼容各种浏览器的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
Jan 08 Javascript
js控制页面的全屏展示和退出全屏显示的方法
Mar 10 Javascript
使用JavaScript刷新网页的方法
Jun 04 Javascript
jQuery检测返回值的数据类型
Jul 13 Javascript
js获取及修改网页背景色和字体色的方法
Dec 29 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
Jun 02 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
Jun 13 Javascript
javascript代码优化的8点总结
Jan 29 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
Feb 04 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
Sep 25 Javascript
Vue发布项目实例讲解
Jul 17 Javascript
node+vue实现文件上传功能
May 28 Javascript
javascript加减乘除的简单实例
Jul 12 #Javascript
浅谈javascript中的加减时间
Jul 12 #Javascript
多功能jQuery树插件zTree实现权限列表简单实例
Jul 12 #Javascript
基于BootStrap环境写jQuery tabs插件
Jul 12 #Javascript
Angular 路由route实例代码
Jul 12 #Javascript
javascript中获取class的简单实现
Jul 12 #Javascript
springMVC结合AjaxForm上传文件
Jul 12 #Javascript
You might like
PHP的分页功能
2007/03/21 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
Joomla开启SEF的方法
2016/05/04 PHP
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
Jquery实现由下向上展开效果的例子
2014/12/08 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
2016/12/18 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
javascript 封装Date日期类实例详解
2017/05/28 Javascript
VueCli3构建TS项目的方法步骤
2018/11/07 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python实现给字典添加条目的方法
2014/09/25 Python
Python import与from import使用及区别介绍
2018/09/06 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
Python面向对象之Web静态服务器
2019/09/03 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
实习心得体会
2014/01/02 职场文书
生日庆典策划方案
2014/06/02 职场文书
高三霸气励志标语
2014/06/24 职场文书
帮一个朋友写的求职信
2014/08/09 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
党员批评与自我批评发言材料
2014/10/14 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书
党小组推荐意见
2015/06/02 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android