Javascript iframe交互并兼容各种浏览器的解决方法
2019/6/27 22:16:07
本文主要是介绍Javascript iframe交互并兼容各种浏览器的解决方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在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 iframe交互并兼容各种浏览器的解决方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01Vue.js 是什么-icode9专业技术文章分享
- 2024-11-01Vue3入门教程:从零开始搭建第一个Vue3项目
- 2024-11-01详解vueRouter4基础教程
- 2024-11-01Vuex4课程:初学者的完整入门指南
- 2024-10-31Vue3课程:新手入门到初级掌握
- 2024-10-31Vue3课程:新手入门到初级应用详解
- 2024-10-31VueRouter4课程:新手入门与实战指南
- 2024-10-31Vuex4学习:从入门到初级实战教程
- 2024-10-31Vue3教程:新手入门与基础实战
- 2024-10-31Vue教程:新手快速入门指南