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 相关文章推荐
动态修改DOM 里面的 id 属性的弊端分析
Sep 03 Javascript
javascript使用定时函数实现跳转到某个页面
Dec 25 Javascript
使用jquery实现放大镜效果
Sep 02 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
Sep 11 Javascript
Spring mvc 接收json对象
Dec 10 Javascript
基于Javascript实现二级联动菜单效果
Mar 04 Javascript
VueJs与ReactJS和AngularJS的异同点
Dec 12 Javascript
jQuery Easyui datagrid连续发送两次请求问题
Dec 13 Javascript
vue判断input输入内容全是空格的方法
Mar 02 Javascript
element-ui的回调函数Events的用法详解
Oct 16 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
Dec 25 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
Oct 30 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目录操作函数之获取目录与文件的类型
2010/12/29 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
基于jquery实现表格内容筛选功能实例解析
2016/05/09 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
利用python实现数据分析
2017/01/11 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
Python数据结构与算法之完全树与最小堆实例
2017/12/13 Python
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
Python爬虫抓取论坛关键字过程解析
2020/10/19 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
2016/12/16 HTML / CSS
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
财务会计毕业生自荐信
2013/11/02 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
个人贷款收入证明
2014/10/26 职场文书
人力资源部岗位职责
2015/02/11 职场文书
golang 实现Location跳转方式
2021/05/02 Golang