JavaScript - iframe внутри документа: getElemById () - PullRequest
1 голос
/ 26 июня 2011

У меня есть следующий код страницы:

<html>
  <body>
    <div id="AAA"> SOME CODE </div>
    <div>
      <iframe>
        <html>
          <div id="AAA"> SOME CODE </div>
          <div id="myDiv"> MORE CODE </div>
        </html>
      </iframe>
      <iframe>
        <html>
          <div id="AAA"> SOME CODE </div>
          <div id="myDiv2"> MORE CODE </div>
        </html>
      </iframe>
    </div>
  </body>
</html>

Теперь самое интересное.Я могу положить руки на div "myDiv".Затем я хочу изменить содержимое div "AAA", того же iframe.Однако, если я сделаю

 myDiv.ownerDocument.getElementById("AAA")

, я получу элемент за пределами iframe - обратите внимание, что есть три элемента с id = "AAA" ...

Мой вопрос, учитывая элемент, какмогу ли я взять его содержащий iframe, а не документ самого верхнего уровня?

Любая помощь приветствуется.

Ответы [ 3 ]

0 голосов
/ 26 июня 2011

Разве вы не можете использовать следующее?

first_iframe = document.getElementsByTagName('iframe')[0];
first_iframe.contentWindow.document.getElementById('123')

Тогда вы можете ссылаться на вспомогательные фреймы:

first_iframes_child = first_iframe.document.getElementsByTagName('iframe')[0];
...

Хотя я бы посоветовал вашей компании использовать jQuery / Prototype, а неиспользуйте iframes, это, вероятно, облегчит вашу жизнь.

0 голосов
/ 26 июня 2011

Из моего рукава, попробуйте такую ​​функцию:

function GetTopElement(child) {
    var parent = child.parentNode;
    while (parent) {
        var node = parent.nodeName.toLowerCase();
        if (node == "body" || node == "html")
            break;
        parent = parent.parentNode;
    }
    return parent;
}

//usage:
var topLevel = GetTopElement(myDiv);
topLevel.getElementById("AAA")...
0 голосов
/ 26 июня 2011

Используйте jQuery: $('iframe').contents().find('#123')

...