zoukankan      html  css  js  c++  java
  • javascript 的一些理解和随笔

    一、iframe里面的页面调用父窗口,左右窗口js函数的方法

    iframe里面的页面调用父窗口,左右窗口js函数的方法
    实现iframe内部页面直接调用该iframe所属父窗口自定义函数的方法。
    比如有A窗口,A内有个IFRAME B,B里面的装载的是C页面,这时C要直接调用A里面的一个自定义函数AFUN();
    那么只要在C页面中写如下JS函数就可以了:
    window.parent.AFUN();
    如果AFUN()有参数也可以直接传递合适的参数进去。
    例如:
    修改父窗口控件属性
    window.parent.document.getElementById('frmright').src=window.parent.document.getElementById('frmrightsrc').value;
    调用父窗口函数
    window.parent.POPUP('bigFram');

    父窗口调用iframe子窗口方法
    <iframe name="myFrame" src="child.html"></iframe>
    myFrame.window.functionName();
    iframe子窗口调用父窗口方法
    parent.functionName();


    ////////////////////////////////////
    用js互相调用iframe页面内的js函数
    一个html页面,分成左右两块,左边为导航栏,右边为需要显示的内容,代码如下:
    左栏的代码为:
    <IFRAME frameBorder=0 id=frmTitleLeft name=framLeft src="left.html" style="HEIGHT: 100%; 180px;">
    连接到left.html
    比如右栏中有一个函数right(),我要在左栏的链接中调用right()函数,该如何实现呢
    1,首先leftframe是内嵌在容器页index.html中的,因此需要先返回到index这一级别,并取得rightframe对象
        var frames=window.parent.window.document.getElementById("frameid");
    2,要能执行其页面中的函数,必须要获得window对象,这里有一个重要的对象contentWindow,获得这个对象,即可执行其中的函数了,如
        frames.contentWindow.right();
    以上代码兼容IE6,Firefox3,chrome2.0,均成功通过测试,IE7没试过,不过应该没问题。
    3.例如:
    window.parent.document.getElementById('leftFrame').contentWindow.JSMenu('MenuUl'+Sid);
    window.parent.frames["leftFrame"].JSMenu('MenuUl'+Sid);

    二、javascript--iframe的JS方法,用法!contentWindow 、parent、top、onload


    一、在使用iframe的页面,要操作这个iframe里面的DOM元素可以用:

    contentWindow、contentDocument(测试的时候chrom浏览器,要在服务器环境下)

     

    1.先获取iframe里面的window对象,再通过这个对象,获取到里面的DOM元素

    例子:

    var ifr = document.getElementById("iframe");
    
    ifr.contentWindow.document.getElementById("XXXXX")
    
    <iframe src="a.html" id=""></iframe>

    ifr.contentWindow 这里,返回的是iframe的window对象,所以后面可以接着调用document方法,再接着调用getElementByTagName。那么就可以对iframe里面的元素进行操作了。

     

    二、在iframe本页面,要操作这个iframe的父页面的DOM元素(即嵌套这个iframe的页面)可以用:

    window.parent、window.top(这里的TOP是获取的顶层,即有多层嵌套iframe的时候使用)

    var ifr = document.getElementByTagName("iframe");
    
    ifr.parent.document.getElementById("XXXXX")
    
    <iframe src="a.html" id=""></iframe>

     三、onload事件

    非IE下用法

    ifr.onload = function(){
       //SOMETHING
    }

    IE下,需要绑定

    ifr.attachEvent("onload",function(){
    
    //something
    
    })

    三、Js中的window.parent ,window.top,window.self详解


    在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法打开当前窗口的那个窗口。

     window : 代表当前窗体
    self : 也代表当前窗体

    window.self


    功能:是对当前窗口自身的引用。它和window属性是等价的。

    语法:window.self

    注:window、self、window.self是等价的。

     

    window.top

    功能:返回顶层窗口,即浏览器窗口。

    语法:window.top

    注:如果窗口本身就是顶层窗口,top属性返回的是对自身的引用。

     

    window.parent

    功能:返回父窗口。

    语法:window.parent

    注:如果窗口本身是顶层窗口,parent属性返回的是对自身的引用。

    在框架网页中,一般父窗口就是顶层窗口,但如果框架中还有框架,父窗口和顶层窗口就不一定相同了。

     

    判断当前窗口是否在一个框架中:

    <script type="text/javascript">
    var b = window.top!=window.self;
    document.write( "当前窗口是否在一个框架中:"+b );
    </script>

    你应当将框架视为窗口中的不同区域,框架是浏览器窗口中特定的部分。一个浏览器窗口可以根据你的需要分成任意多的框架,一个单个的框架也可以分成其它多个框架,即所谓的嵌套框架。


  • 相关阅读:
    设计模式之观察者模式
    设计模式之模板方法模式
    设计模式之代理模式(全面讲解)
    设计模式之工厂模式(包含三种模式)
    设计模式之单例模式(包含三种方式)
    opencv+vs2015 堆内存析构异常
    用python来压缩文件
    GPT安装ubuntu的问题
    Two Sum and add Two Numbers
    [LeetCode] Palindrome Partitioning II
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3424212.html
Copyright © 2011-2022 走看看