contentDocument для iframe

что именно представляет собой " contentDocument "для iframe (или даже старого элемента" frame")? Это эквивалентно элемента HTML или "тело" элемента ? Что это за польза? И поддерживается ли это свойство во всех браузерах?

3 ответов


w3.org

contentDocument типа Document, только для чтения, введенный в DOM уровне 2 Документ, который содержит этот фрейм, если он есть и доступен, или null в противном случае.

MDN

из элемента DOM iframe скрипты могут получить доступ к объекту window включенной HTML-страницы через свойство contentWindow. Свойство contentDocument ссылается на элемент документа внутри iframe (это эквивалентно contentWindow.документ), но не поддерживается версиями Internet Explorer до IE8.

в MSDN

документ, который содержит эта страница или рамка
Это свойство является новым в Windows Internet Explorer 8

таким образом, чтобы получить innerHTML элемента тела, вы можете использовать

iframe.contentDocument.getElementsByTagName("body")[0]

или

iframe.contentDocument.body

в сегодняшнем броузеры.


contentDocument - это стандартизированный способ получить iframe или frame элемент:

var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
var iframeBody = iframeDoc.body;

обратите внимание, что если iframe не подается из того же домен как основной документ, ограничения безопасности браузера будут препятствовать доступу к его объекту документа тем или иным способом.


contentDocument представляет документ iframe (объект DOM). Это не эквивалентно html поскольку документы имеют свои собственные свойства, однако, если вы вводите:

myFrame.contentDocument.body 

вы получите само тело.

он поддерживается во всех браузерах, с крошечной модификацией: для использования Internet Explorer

myFrame.contentWindow.document

Наслаждайтесь, Нили