contentDocument pour un iframe

qu'est-ce que" contentDocument "représente exactement pour une iframe (ou même l'ancien élément" frame")? Est-il équivalent à l'élément "html" ou à l'élément "body"? Qu'est-ce que ça sert? Et cette propriété est-elle prise en charge par tous les navigateurs?

12
demandé sur testndtv 2011-07-05 15:19:25

3 réponses

w3.org

contentDocument de type de Document, readonly, introduite dans DOM Niveau 2 Le document que ce cadre contient, s'il y en a et qu'il est disponible, ou null autrement.

MDN

de L'élément DOM iframe, les scripts peuvent accéder à l'objet window de la page HTML incluse via le contentWindow propriété. La propriété contentDocument fait référence à l'élément document à l'intérieur de l'iframe (ce qui équivaut à contentWindow).document), mais N'est pas pris en charge par les versions Internet Explorer avant IE8.

msdn

le document cette page ou ce cadre contient

Cette propriété est nouvelle dans Windows Internet Explorer 8

donc pour obtenir le innerHTML de l'élément de corps que vous pourriez utiliser

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

ou

iframe.contentDocument.body

dans les navigateurs actuels.

19
répondu mplungjan 2011-07-05 14:50:39

contentDocument est le moyen standardisé pour mettre la main sur l'objet Document de l'iframe ou du cadre. C'est le même objet que JavaScript dans l'iframe accéderait par document .

comme indiqué dans d'autres réponses, IE ne l'a pas supporté avant la version 8 mais a pris en charge l'accès à l'objet Window de l'iframe via contentWindow . Une façon de mettre la main sur l'élément <body> d'une iframe est donc:

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

notez que si l'iframe n'est pas servi à partir du même domaine que le document principal, les restrictions de sécurité du navigateur empêcheront l'accès à son objet document de cette manière ou de toute autre manière.

11
répondu Tim Down 2011-07-05 12:05:46

contentDocument représente le document d'une iframe (objet DOM). Il n'est pas équivalent à html puisque les documents ont leurs propres propriétés, cependant si vous tapez:

myFrame.contentDocument.body 

, Vous obtiendrez le corps lui-même.

il est supporté dans tous les navigateurs, avec une modification minuscule: pour L'utilisation D'Internet Explorer

myFrame.contentWindow.document

Profiter De, Nili

2
répondu Nili 2014-05-19 18:52:56