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 相关文章推荐
JS 显示当前日期与时间的代码
Mar 24 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
Apr 27 Javascript
jquery控制左右箭头滚动图片列表的实例
May 20 Javascript
利用js制作html table分页示例(js实现分页)
Apr 25 Javascript
简单方法判断JavaScript对象为null或者属性为空
Sep 26 Javascript
AngularJS Module方法详解
Dec 08 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
Aug 02 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
May 02 Javascript
详解如何使用webpack打包多页jquery项目
Feb 01 jQuery
js实现页面多个日期时间倒计时效果
Jun 20 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
Apr 10 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
Jun 22 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
Web程序工作原理详解
2014/12/25 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
关于document.cookie的使用javascript
2010/10/29 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
vue-router 权限控制的示例代码
2017/09/21 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
Python open读写文件实现脚本
2008/09/06 Python
Python求解平方根的方法
2015/03/11 Python
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
Python实现的简单hangman游戏实例
2015/06/28 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
Python算法应用实战之栈详解
2017/02/04 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
在Python中表示一个对象的方法
2019/06/25 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
运行Python编写的程序方法实例
2020/10/21 Python
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
管理学专业个人求职信范文
2013/09/21 职场文书
求职者应聘的自我评价
2013/10/16 职场文书
学生自我评价范文
2014/02/02 职场文书
美术国培研修感言
2014/02/12 职场文书
《搭石》教学反思
2014/04/07 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
职业生涯规划书前言
2014/04/15 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书