Как получить родителя iframe элемент от внутренней страницы, не зная идентификатор?

Давайте предположим, что у меня есть что-то вроде этого:

<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 элементу и предупреждению () значение хэш-функции (в этом случае "gg4v5e").

Быть более конкретным. Если Вы знакомы с Firebug Firefox, он визуализирует эту такую ситуацию:

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

Действительно ли возможно назвать "что-то" для получения родительского элемента (<iframe>) когда я со своим JavaScript в <html> элемент на внутренней странице?

7
задан Waynn Lue 6 March 2012 в 12:42
поделиться

1 ответ

Конечно, есть. Этот код работает в FF и IE6, Opera, Chrome (требуется веб-сервер и оба файла из одного протокола и порта домена)

        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"));
              }
           }
        }
17
ответ дан 6 December 2019 в 11:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: