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 相关文章推荐
慎用 somefunction.prototype 分析
Jun 02 Javascript
Javascript 设计模式(二) 闭包
May 26 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
Sep 29 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
Dec 26 Javascript
JavaScript实现点击按钮就复制当前网址
Dec 14 Javascript
使用javascript插入样式
Mar 14 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
Apr 28 Javascript
angular.js+node.js实现下载图片处理详解
Mar 31 Javascript
jquery与js实现全选功能的区别
Jun 11 jQuery
你不可不知的Vue.js列表渲染详解
Oct 01 Javascript
React中使用UMEditor的方法示例
Dec 27 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
Oct 27 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
收音机指标测试方法及仪器
2021/03/01 无线电
基于PHP读取csv文件内容的详解
2013/06/18 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
超简单的Vue.js环境搭建教程
2017/03/17 Javascript
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
2019/04/04 Javascript
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
Python进行数据提取的方法总结
2016/08/22 Python
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
Python中的Numpy矩阵操作
2018/08/12 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
Python基础教程之异常详解
2019/01/10 Python
通过python爬虫赚钱的方法
2019/01/29 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
python三引号如何输入
2020/07/06 Python
美国珠宝店:Helzberg Diamonds
2018/10/24 全球购物
联想英国官网:Lenovo英国
2019/07/17 全球购物
经典C++面试题一
2016/11/06 面试题
大跃进口号
2014/06/16 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
老公保证书怎么写
2015/02/26 职场文书
Python time库的时间时钟处理
2021/05/02 Python
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android