Как получить этот дочерний HTML-элемент в JavaScript?

У меня есть iframe, который выглядит так:

<iframe id="iframe2" ...>
    #document
        <html>...</html>
</iframe>

Я пытаюсь получить предмет подiframe сhtml тег.
В JavaScript, когда я делаю:

document.getElementByID("iframe2")

это возвращает правильный iframe.

Тем не менее, когда я делаю это:

document.getElementByID("iframe2").childNodes

возвращаемое значение[].

document.getElementByID("iframe2").getElementsByTagName("#document") а такжеdocument.getElementByID("iframe2").getElementsByTagName("html") также вернуть[].

Как я могу получить доступ к этомуhtml тег?
Кроме того, что это такое#document тег называется?

 apsillers15 июн. 2012 г., 18:11
@Kamyar#document не настоящий дочерний узел; это заполнитель, вставленный инструментами разработчика Chrome (возможно, также и Firebug?), который представляет элемент iframe.contentDocument имущество.
 Hauke Haien15 июн. 2012 г., 17:49
Очень похоже на это:stackoverflow.com/questions/1088544/…
 Di Zou15 июн. 2012 г., 18:11
@Kamyar # Документ - это то, на что он похож. Когда я проверяю элементы, появляется & quot; # document & quot; вложенный в iframe.
 kapa15 июн. 2012 г., 17:49
возможный дубликатstackoverflow.com/questions/926916/…
 Kamyar Infinity15 июн. 2012 г., 17:58
Там что-то не так. Что такое #document? Разве это не просто текст? Смешивание текста с HTML-тегами может привести к тому, что весь контент будет рассматриваться как текстовый узел.

Ответы на вопрос(4)

Попробуй это :

var a = document.getElementById("iframe2").getElementsByTagName("*")[0];
Решение Вопроса
document.getElementByID("iframe2").contentWindow.document

Или вариант, не поддерживаемый более старым IE,

document.getElementByID("iframe2").contentDocument

Это даст вамdocument объект встроенной страницы, и оттуда вы можете использовать.documentElement, .body или же.head свойства, чтобы получить HTML / body / head DOM.

Если вы хотитеwindow объект встроенной страницы, используйтеcontentWindow вместоcontentDocument.

MDN имеет руководство посценарий iframe что вы, вероятно, найдете полезным.

 15 июн. 2012 г., 18:15
Это означает, что фрейм является междоменным. По соображениям безопасности вы не можете получить доступ к iframe с междоменным происхождением. (Представьте, что любая страница в Интернете может просто открыть ваш почтовый ящик Gmail и выполнить поиск по DOM страницы - это катастрофа безопасности.)
 Di Zou15 июн. 2012 г., 18:12
Я получаю "ноль" или & quot; неопределенный & quot; когда я попробую любой из них. Я также получаю & quot; Небезопасную попытку JavaScript для доступа к фрейму & quot; ошибка
 Di Zou15 июн. 2012 г., 18:48
Да, это так. Каркас междоменный. Спасибо!

Имеет ли URL для содержимого IFrame тот же домен, что и родительская страница? Если нет, вы не сможете получить доступ к чему-либо внутри IFrame из-за политики того же происхождения.

Пожалуйста, попробуйте этот код:

var a = document.getElementById("iframe2").firstChild;
 Di Zou15 июн. 2012 г., 17:50
Возврат является "неопределенным"
 15 июн. 2012 г., 20:44
@DiZou покажите нам полный HTML, пожалуйста

Ваш ответ на вопрос