zoukankan      html  css  js  c++  java
  • 窗口、窗体之间的关系

    窗口、窗体之间的关系:
          通过window.open()创建的新窗口的Window对象具有opener属性,可以通过opener打开它的原始窗口,这样两个窗口之间就可以相互引用,彼此之间可以读取对方的属性方法,而窗体也是一样。
            窗体是由<iframe>创建的,该元素有contentWindow属性,它引用自身的Window对象,而Window对象有frameElement属性,若该Window对象表示一个窗体,则frameElement是对<Iframe>元素的引用,如:对于元素<iframe id = 'f1'>,
            var elt = document.getElementById('f1');
            var win = elt.contentWindow;
            win.frameElement === elt; //true
            window.frameElement === elt; //false 对于顶级窗口来说永远是false
            每个Window对象都有一个frames属性,包括窗体和子窗体。frames属性引用了它所包含的窗体和子窗体的Window对象,frames是由这些Window对象组成的类数组对象,可通过数字或窗体名来进行索引,如引用第一个子窗体frames[0],引用第二个子窗体的第三个子窗体frames[1].frames[2],引用兄弟窗体parent.frames[1]。
            内置对象在不同的窗口、窗体之间是相互独立的,它们有自己的一份独立的构造函数和原型对象的副本,它会在所有窗口窗体内自动预定义;而自定义对象则不同,可以在能够相互通信的窗口、窗体之间共享这个对象的构造函数和它的原型;如窗口中定义了Set类,有子窗体A和B,则:
            在父窗口中 :
                    var s = new Set(); String.toString = function(){return '内置对象';} (修改String的toString方法)
                    s.a === 1; //true
            在A中 :
                    var sa = new parent.Set(); parent.Set.prototype.a =1; (给自定义类Set的原型添加属性a,则所有能相互通信的窗口共享a)
                    var str = '测试';  str.toString; //测试  (调用的是窗体A自身的String对象的toString方法)
            在B中 :
                    var Set = top.Set(); var sb = new Set(); sb.a === 1;  //true
     
    要引用窗口中的一个窗体,可以使用如下语法:
    frames[i] //当前窗口的框架
    self.frames[i] //当前窗口的框架
    w.frames[i] //窗口 w 的框架
    要引用一个框架的父窗口(或父框架),可以使用下面的语法:
    parent //当前窗口的父窗口
    self.parent //当前窗口的父窗口
    w.parent //窗口 w 的父窗口
    要从顶层窗口含有的任何一个框架中引用它,可以使用如下语法:
    top //当前框架的顶层窗口
    self.top //当前框架的顶层窗口
    f.top //框架 f 的顶层窗口
  • 相关阅读:
    vue中的 computed 和 watch 的区别
    mysql8.0 初始化数据库及表名大小写问题
    sql server alwayson 调整数据文件路径
    zabbix 自定义监控 SQL Server
    mysql 创建用户及授权
    mysql 设置从库只读模式
    mysql8.0 主从复制安装及配置
    centos8.0安装mysql8.0
    centos8替换阿里数据源
    npm publish 报错 【you or one of your dependencies are requesting a package version that is forbidden by your security policy】
  • 原文地址:https://www.cnblogs.com/susufufu/p/5714020.html
Copyright © 2011-2022 走看看