zoukankan      html  css  js  c++  java
  • iframe子页面与父页面元素的访问以及js变量的访问

     

    1. jquery 在iframe子页面获取父页面元素代码如下:

    $("#objid", parent.document)

    2. jquery在父页面 获取iframe子页面的元素

    代码如下:

    $("#objid",document.frames('iframename').document)

     

    1、子页面访问父页面元素 

    parent.document.getElementById('id')和document相关的方法都可以这样用 

    2、父页面访问子页面元素 

    document.getElementById('iframeId').contentDocument.getElementsByTagName('table'); contentDocument后可以使用document相关方法 
    var tet = document.getElementById('iframeId').contentWindow.document.getElementById("text_inputId"); 
    alert(tet.value);

    3、子页面访问父页面js变量(注:父页面的js变量需为全局变量) 

    子页面var variable = parent.variableParent   (variableParent为父页面定义的变量) 

    4、父页面访问子页面js变量 

    这部分目前的解决方案是在父页面设置全局变量,在子页面进行修改后将子页面的变量赋值给父页面 

    5、子页面访问父页面js方法

    window.parent.paramMethod();

    6、父页面访问子页面js方法

    document.getElementById('iframeId').contentWindow.iframeMethod(param);

    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);

    ////////////////////////////////////////
    还有下面一种,没测试过

    并不是象通常那样iframeName.test();——test()为iframe里的方法。因为要写一个通用一点的东西,所以是从一个配置文件中动态获取到iframe的id。然后调用里面的方法。可是不成功。相烦帮忙看一看。代码如下:   
    <iframe   id="iframe1"></iframe>   
        
    var   cs   =   document.all;   
                for(var   i   =   0;   i   <   cs.length;   i++)   {   
                        if(cs.tagName.toUpperCase()   ==   "IFRAME")   {   
                                if(cs.id   ==   "iframe1")   {   
                                        alert(frmDealData);   
                                        alert(cs);   
                                        document.frames.iframe1.setScreenletStatus(iframeLayoutLvl);   
                                        document.frames.cs.setScreenletStatus(iframeLayoutLvl);   
                                }   
                        }   
                }   
    第一句调用是成功的。   
    可第二句就不成功。   
    如果在只能取得cs对象的情况下,该怎么调用iframe里的方法?谢谢

    ------------------------------------ 
    不要用id,用name   
    window.frames[cs].fun()

  • 相关阅读:
    【Scala】看代码,初步了解Apply方法
    【Scala】通过简洁代码搞明白伴生关系、主构造器和辅助构造器的关系
    【Scala】关于集合的各种知识点
    【Scala】新手入门,基础语法概览
    C#中的异步多线程13 回调
    C#中的异步多线程12 轮询
    C#中的异步多线程11 等待直到结束
    C#中的异步多线程10 BackgroundWorker类
    C#中的异步多线程9 完整的GUI示例
    C#中的异步多线程8 Task.Yield
  • 原文地址:https://www.cnblogs.com/yesu/p/8175775.html
Copyright © 2011-2022 走看看