代码之家  ›  专栏  ›  技术社区  ›  CZFox

如何在不知道id的情况下从内页获取父iframe元素?

  •  7
  • CZFox  · 技术社区  · 15 年前

    假设我有这样的东西:

    <html>
    ...
        <div>
            <iframe src="test.html" hash="r4d5f7"></iframe>
            <iframe src="test.html" hash="8f7x97"></iframe>
            <iframe src="test.html" hash="gg4v5e"></iframe>
            <iframe src="test.html" hash="e54f87"></iframe>
        </div>
    ...
    </html>
    

    test.html为空页,自定义 hash

    我的问题是:有没有一种方法可以使用Javascript从内部页面(test.html)获取适当的iframe元素?比方说,我在第三个iframe的页面中,需要获得它的iframe元素和alert()散列值(在本例中为“gg4v5e”)。

    更具体地说。如果您熟悉Firefox的Firebug,它会将这种情况可视化为:

    <html>
    ...
        <div>
            <iframe src="test.html" hash="r4d5f7">
                <html>
                     ...
                </html>
            </iframe>
            <iframe src="test.html" hash="8f7x97">
                <html>
                     ...
                </html>
            </iframe>
            <iframe src="test.html" hash="gg4v5e">
                <html>
                     ...
                </html>
            </iframe>
            <iframe src="test.html" hash="e54f87">
                <html>
                     ...
                </html>
            </iframe>
        </div>
    ...
    </html>
    

    是否可以调用“something”来获取父元素( <iframe> )当我使用Javascript时 <html>

    1 回复  |  直到 13 年前
        1
  •  17
  •   naikus    15 年前

    当然有。 此代码适用于FF和IE6、Opera、Chrome(需要一个web服务器,并且两个文件来自同一域协议和端口)

            function getHash()   {
               var ifs = window.top.document.getElementsByTagName("iframe");
               for(var i = 0, len = ifs.length; i < len; i++)  {
                  var f = ifs[i];
                  var fDoc = f.contentDocument || f.contentWindow.document;
                  if(fDoc === document)   {
                     alert(f.getAttribute("hash"));
                  }
               }
            }