javascript iframe 操作

学习中遇到点小问题,这个是在网上找到的,先备忘。

1.父页面中获取IFRAME的WINDOW对象

获得了window对象后,就可以调用iframe页面中定义的方法等。

IE:可以通过iframeId、windows.iframeId、windows.iframeName、window.frames[iframeId]、window.frames[iframeName]、window.frames[iframeIndex]和iframeElement.contentWindow这6种方法来获取iframe的window对象。

FF:可以通过windows.iframeName、window.frames[iframeName]和iframeElement.contentWindow这3种方法获取window对象。

总结:为了兼容大多数浏览器,应使用iframeElement.contentWindow来获取。见如下代码:

?
1
var  iframe document.getElementByIdx_x( 'iframe1' ).contentWindow;

ie6和ie7还可以使用document.frames["iframe Name"]或者document.frames["iframe ID"]来获取相当于contentWindow属性,而firefox和chrome并不支持这些document.frames["iframe Name"]或者document.frames["iframe ID"],但是window.frames["iframe Name"]或window.frames[index](index是索引值)也支持所有主流浏览器;

2.父页面中获取IFRAME的DOCUMENT对象

标准浏览器:通过iframeElement.contentDocument来引用iframe的doument对象,但是IE浏览器不支持,确切说应该是IE 6/7,IE8中可以用此方法来获取了。

IE:用window.frames[iframeId].document来获取

因为document是window的一个子对象,你也可以先获取iframe的window对象,再通过window.document来引用。

总结:应使用以下两方法来获取,见代码:

?
1
2
3
4
5
6
7
8
9
10
"iframe1" src="frame1.html" 
"text/javascript"  
     //获取iframe的document对象         
     //方法1:先获取window对象再通过window.docuemnt
     var  iframe document.getElementByIdx_x( 'iframe1' ).contentWindow.document;  
     //方法2:分支判断
     function  getIframeDom(iframeId)  
         return  document.getElementByIdx_x(iframeId).contentDocument || window.frames[iframeId].document;  
      
3.IFRAME页面获取父页面的WINDOW对象

parent:父页面window对象
window.parent
top:顶层页面window对象
window.top
self:始终指向当前页面的window对象(与window等价)

如果窗口是顶级窗口,那么parent==self==top
根据这个可以防止网页被嵌套:

?
1
2
3
if (window!=window.top){
     window.top.location.href=window.location.href:
}

兼容性:适用于所有浏览器,当拿到了父页面的window对象后,就可以访问父页面定义的全局变量和函数。

注:chrome要求在服务器环境下进行iframe操作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值