earlyup

博客园 首页 新随笔 联系 订阅 管理

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则相对弱智一点,在上一级父窗口中找不到就不再去找了。

posted on 2012-03-01 22:06  天边那朵云  阅读(543)  评论(0编辑  收藏  举报