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之学会吝啬 精简代码
Apr 25 Javascript
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
Oct 11 Javascript
JS注释所产生的bug 即使注释也会执行
Nov 19 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
Dec 16 Javascript
JavaScript禁止页面操作的示例代码
Dec 17 Javascript
jQuery插件kinMaxShow扩展效果用法实例
May 04 Javascript
avalonjs实现仿微博的图片拖动特效
May 06 Javascript
jQuery+json实现的简易Ajax调用实例
Dec 14 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
Mar 11 Javascript
js通过Date对象实现倒计时动画效果
Oct 27 Javascript
vue实现自定义H5视频播放器的方法步骤
Jul 01 Javascript
layui 富文本编辑器和textarea值的相互传递方法
Sep 18 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 不错的学习资料
2009/02/06 PHP
PHP编程函数安全篇
2013/01/08 PHP
PHP可变变量学习小结
2015/11/29 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
js 字符串操作函数
2009/07/25 Javascript
理解javascript封装
2016/02/23 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
python获取图片颜色信息的方法
2015/03/18 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
python实现浪漫的烟花秀
2019/01/30 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
python制作微博图片爬取工具
2021/01/16 Python
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
中间件分为哪几类
2016/09/18 面试题
社区消防工作实施方案
2014/03/21 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
2014群众路线学习笔记
2014/11/06 职场文书
预备党员转正材料
2014/12/19 职场文书
2015年采购工作总结
2015/04/10 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书
学校捐书活动总结
2015/05/08 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis