ContentDocument для iframe
Что именно представляет "contentDocument" для iframe (или даже старого элемента "frame" )? Это эквивалентно элементу "html" или "body"?
Что это такое?
И поддерживается ли это свойство во всех браузерах?
Ответы
Ответ 1
w3.org
contentDocument of type Документ, только для чтения, введенный в DOM Level 2 Документ этого фрейма содержит, если он есть, и он доступен, или null в противном случае.
MDN
Из элемента DOM iframe скрипты могут получить доступ к объекту окна включенной HTML-страницы через свойство contentWindow. Свойство contentDocument ссылается на элемент документа внутри iframe (это эквивалентно contentWindow.document), но не поддерживается версиями Internet Explorer до IE8.
msdn
документ на этой странице или в рамке содержит Это свойство новое в Windows Internet Explorer 8
Итак, чтобы получить innerHTML элемента body, вы можете использовать
iframe.contentDocument.getElementsByTagName("body")[0]
или
iframe.contentDocument.body
в современных браузерах.
Ответ 2
contentDocument
- стандартизированный способ получить объект iframe или frame Document
. Это тот же объект, что и JavaScript, работающий в iframe, будет доступен через Document
.
Как отмечалось в других ответах, IE не поддерживал его до версии 8, но поддерживал доступ к объекту iframe Window
через contentWindow
. Таким образом, кросс-браузерный способ получения элемента iframe <body>
:
var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
var iframeBody = iframeDoc.body;
Обратите внимание, что если iframe не обслуживается из того же домена, что и основной документ, ограничения безопасности браузера будут препятствовать доступу к его объекту документа этим или любым другим способом.
Ответ 3
contentDocument
представляет собой документ iframe (объект DOM). Это не эквивалентно html
, поскольку документы имеют свои собственные свойства, однако если вы введете:
myFrame.contentDocument.body
Вы получите тело.
Он поддерживается во всех браузерах с небольшой модификацией: для Internet Explorer используйте
myFrame.contentWindow.document
Наслаждайтесь, Нили