在Javascript中从其他框架访问框架的元素

时间:2017-03-06 06:28:20

标签: javascript jquery html html5 frames

如何从其他帧访问帧的元素。对于Ex:

main.html中:

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    </head> 
    <frameset rows="33%,33%,*">
        <frame class="fra" src="frame1.html"/>
        <frame class="fra" src="frame2.html"/>
    </frameset>
</html>

frame1.html:

<html>
    <HEAD>
        <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    </HEAD>
    <body>
        <b><p id="para"> This is frame one.html </p></b>
    </body>
</html> 

frame2.html:

<html>
    <HEAD>
        <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    </HEAD>
    <body>
        <b><p id="para"> This is frame two.html </p></b>
        <button id="but"> Get data </button>
        <script>
            $(document).ready(function(){
                $("#but").click(function(){
                    alert(window.frames[0].document.getElementById('para'));
                });
            });
        </script>
    </body>
</html>

从frame2点击按钮后,我需要获取&#34; para&#34;的数据。在frame1中出现的id元素。所以,我试图访问该元素如图所示 下面。但它没有奏效。

    window.frames[0].document.getElementById('para')

它将错误显示为:

  

未捕获的TypeError:无法读取属性&#39;文档&#39;未定义的

所以,window.frames[0]本身未定义 任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您应该在iframe上添加ID,例如&#34; iframe1&#34;和&#34; iframe2&#34;。

    <frame class="fra" src="frame1.html" id="frame1" />
    <frame class="fra" src="frame2.html" id="frame2" />

然后:

$(window.parent.document).find("#iframe1").contents().find("#para")

应该允许你从iframe2访问id为#34; para&#34;的元素。第一帧。

$(window.parent.document)将允许您从iframe2返回到主文档,然后找到iframe1,然后contents()将允许您进入iframe1,在那里您将能够找到& #34;#段&#34;元件。