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 的顶层窗口
  • 相关阅读:
    selenium 滑动页面至元素可见
    APP接口测试和功能测试点
    单元测试总结
    python-selenium -- 弹出框处理
    集成测试
    白盒、黑盒、灰盒、动(静)态分析、人工(自动化)测试、覆盖率
    css3 页面退出和进入的动画
    CSS样式中,background-image 背景图片居中显示并且在不同屏幕分辨率下始终居中
    CSS选择器4是下一代CSS选择器规范
    setInterval()-----------js 函数总结
  • 原文地址:https://www.cnblogs.com/susufufu/p/5714020.html
Copyright © 2011-2022 走看看