今天干的活涉及到了iframe之间的通信问题,自己对这一块不是很了解,查了好多资料,在这里整理一波:
1.监听iframe的加载事件
首先得在整体页面的加载事件里面,通过(self!=top)来判断iframe的加载
$(function(){
if(self!=top){
//此时iframe正在加载
}
})
2.iframe中获取父元素中的某个元素
iframe.parent.document
在有iframe的页面中,其实有两个window对象,一个是顶层的父元素的window,一个是iframe内的window,若iframe想访问父元素内的内容,可以通过iframe.parent.document获取document,接下来就按document.getElementBy...或者$("").find()来获取你想要的元素
3.获取当前iframe中的地址(与iframe的src属性区分开来)
iframe.location.pathname
获取iframe的地址的话,我建议使用iframe.location.pathname,不要使用iframe.getAttribute("src")/attr("src")。因为在点击浏览器的后退按钮时,iframe标签的src属性是不会改变的。有时需要对路径处理时会出问题。而iframe.location.pathname则不会出现这种问题,因为它是随着当前的iframe的window对象改变而改变的
ps:另外记录一个无关iframe的问题:当要对数组进行遍历操作时,第一时间想到的就是map()方法,但是需要注意map方法不能使用break强制退出,当需要强制退出时尽量使用for循环。
over