簡體   English   中英

如何在不知道id的情況下從內頁獲取父iframe元素?

[英]How to get parent iframe element from inner page without knowing id?

讓我們想象我有這樣的事情:

<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屬性總是具有不同的值,出於安全原因,兩個頁面都在同一個域上,iframe元素的數量和順序是隨機的。

我的問題是:有沒有辦法從內頁(test.html)使用Javascript到其正確的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>

當我在內頁的<html>元素中使用我的Javascript時,是否可以調用“something”來獲取父元素( <iframe> )?

當然有。 此代碼適用於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"));
              }
           }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM