关于top对象和parent对象的一点小感悟

top和parent是Javascript的内置对象,在框架(iframe)结构中常被用到,关于两者的区别如下:

top: 该变更永远指分割窗口最高层次的浏览器窗口。如果计划从分割窗口的最高层次开始执行命令,就可以用top变量。
parent: 该变量指的是包含当前分割窗口的父窗口。如果在一个窗口内有分割窗口,而在其中一个分割窗口中又包含着分割窗口,则第2层的分割窗口可以用parent变量引用包含它的父分割窗口。
附:Window对象、Parent对象、Frame对象、Document对象和Form对象的阶层关系 Window对象→Parent对象→Frame对象→Document对象→Form对象,如下: parent.frame1.document.forms[0].elements[0].value;

笔者在开发中发现一个有趣的现象,页面上多层iframe嵌套的结构,即iframe里嵌iframe

<html>

<body>

<script>

  var debug = function(){

    alert('debug');

  };

</script>

<iframe id=“frm1”>

  <html>

    <body><iframe id="frm2"></iframe></body>

  </html>

</iframe>

</body>

</html>

在frm2中执行js代码:

parent.debug();

在IE7+ Chrome SF FF 均能正常执行,而IE6却不行。究起原因,是IE7+ Chrome SF FF等浏览器在处理parent对象时,会类似作用域链的方式,一级级的向上查找,因此能找到顶层函数,而IE6则相对弱智一点,在上一级父窗口中找不到就不再去找了。

转载于:https://www.cnblogs.com/earlyup/archive/2012/03/01/2376299.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值