aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/api/document_object_model/introduction
diff options
context:
space:
mode:
authorjulieng <julien.gattelier@gmail.com>2021-10-02 17:20:24 +0200
committerSphinxKnight <SphinxKnight@users.noreply.github.com>2021-10-02 17:30:20 +0200
commit1407c8fdef01ecd0ffb8a8bd46e7113f119b9fde (patch)
tree30a56efd3eff3a01bd1611e1840fdbbfacf544a4 /files/fr/web/api/document_object_model/introduction
parentc05efa8d7ae464235cf83d7c0956e42dc6974103 (diff)
downloadtranslated-content-1407c8fdef01ecd0ffb8a8bd46e7113f119b9fde.tar.gz
translated-content-1407c8fdef01ecd0ffb8a8bd46e7113f119b9fde.tar.bz2
translated-content-1407c8fdef01ecd0ffb8a8bd46e7113f119b9fde.zip
convert content to md
Diffstat (limited to 'files/fr/web/api/document_object_model/introduction')
-rw-r--r--files/fr/web/api/document_object_model/introduction/index.md371
1 files changed, 214 insertions, 157 deletions
diff --git a/files/fr/web/api/document_object_model/introduction/index.md b/files/fr/web/api/document_object_model/introduction/index.md
index fa1af30b15..81279982bf 100644
--- a/files/fr/web/api/document_object_model/introduction/index.md
+++ b/files/fr/web/api/document_object_model/introduction/index.md
@@ -11,62 +11,67 @@ tags:
- Tutorial
translation_of: Web/API/Document_Object_Model/Introduction
---
-<div>{{DefaultAPISidebar("DOM")}}</div>
+{{DefaultAPISidebar("DOM")}}
-<p>Le Modèle Objet de Document (<strong>DOM: Document object Model</strong>) est la representation objet des données qui composent la structure et le contenu d'un document sur le web. Dans ce guide, nous présenterons brièvement le DOM. Nous verrons comment le DOM représente un document {{Glossary("HTML")}} ou {{Glossary("XML")}} en mémoire et comment vous utilisez les API pour créer du contenu web et des applications.</p>
+Le Modèle Objet de Document (**DOM: Document object Model**) est la representation objet des données qui composent la structure et le contenu d'un document sur le web. Dans ce guide, nous présenterons brièvement le DOM. Nous verrons comment le DOM représente un document {{Glossary("HTML")}} ou {{Glossary("XML")}} en mémoire et comment vous utilisez les API pour créer du contenu web et des applications.
-<h2 id="what_is_the_dom">Qu'est-ce que le DOM?</h2>
+## Qu'est-ce que le DOM?
-<p>Le Document Object Model (DOM) est une interface de programmation pour les documents HTML et XML. Il fournit une page dont des programmes peuvent modifier la structure, son style et son contenu. Cette représentation du document permet de le voir comme un groupe structuré de nœuds et d'objets possédant différentes propriétés et méthodes. Fondamentalement, il relie les pages Web aux scripts ou langages de programmation.</p>
+Le Document Object Model (DOM) est une interface de programmation pour les documents HTML et XML. Il fournit une page dont des programmes peuvent modifier la structure, son style et son contenu. Cette représentation du document permet de le voir comme un groupe structuré de nœuds et d'objets possédant différentes propriétés et méthodes. Fondamentalement, il relie les pages Web aux scripts ou langages de programmation.
-<p>Une page Web est un document. Celui-ci peut être affiché soit dans la fenêtre du navigateur, soit sous la forme de son code source HTML. Mais il s'agit du même document dans les deux cas. Le modèle objet de document proposé par le DOM fournit une autre manière de représenter, stocker et manipuler ce même document. Le DOM est une représentation entièrement orientée objet de la page Web, et peut être manipulé à l'aide d'un langage de script comme JavaScript.</p>
+Une page Web est un document. Celui-ci peut être affiché soit dans la fenêtre du navigateur, soit sous la forme de son code source HTML. Mais il s'agit du même document dans les deux cas. Le modèle objet de document proposé par le DOM fournit une autre manière de représenter, stocker et manipuler ce même document. Le DOM est une représentation entièrement orientée objet de la page Web, et peut être manipulé à l'aide d'un langage de script comme JavaScript.
-<p>Les normes <a href="https://www.w3.org/DOM/">DOM du W3C</a> et <a href="https://dom.spec.whatwg.org">WHATWG DOM</a> forment la base du DOM implémenté dans la plupart des navigateurs modernes. Beaucoup d'entre-eux fournissent des extensions allant plus loin que le standard, faites donc attention lorsque vous les utilisez sur le Web, où les documents peuvent être consultés par de nombreux navigateurs avec chacun un DOM différent.</p>
+Les normes [DOM du W3C](https://www.w3.org/DOM/) et [WHATWG DOM](https://dom.spec.whatwg.org) forment la base du DOM implémenté dans la plupart des navigateurs modernes. Beaucoup d'entre-eux fournissent des extensions allant plus loin que le standard, faites donc attention lorsque vous les utilisez sur le Web, où les documents peuvent être consultés par de nombreux navigateurs avec chacun un DOM différent.
-<p>Par exemple, DOM du W3C spécifie que la méthode <code>getElementsByTagName</code> dans le code ci-dessous doit renvoyer une liste de tous les éléments <code>&lt;P&gt;</code> présents dans le document :</p>
+Par exemple, DOM du W3C spécifie que la méthode `getElementsByTagName` dans le code ci-dessous doit renvoyer une liste de tous les éléments `<P>` présents dans le document :
-<pre class="brush: js">const paragraphs = document.querySelectorAll("p");
-// paragraphes[0] est le premier élément &lt;p&gt;
-// paragraphes[1] est le second élément &lt;p&gt;, etc.
+```js
+const paragraphs = document.querySelectorAll("p");
+// paragraphes[0] est le premier élément <p>
+// paragraphes[1] est le second élément <p>, etc.
alert(paragraphes[0].nodeName);
-</pre>
+```
-<p>Chacune des propriétés et des méthodes et chacun des évènements disponibles permettant la manipulation et la création de pages Web sont organisés dans des objets (par exemple, l'objet <code>document</code> qui représente le document lui-même, l'objet <code>table</code> qui implémente l'interface DOM particulière <code>HTMLTableElement</code> permettant d'accéder aux tables HTML, etc.). Cette documentation fournit une référence, objet par objet, du DOM implémenté dans les navigateurs basés sur Gecko.</p>
+Chacune des propriétés et des méthodes et chacun des évènements disponibles permettant la manipulation et la création de pages Web sont organisés dans des objets (par exemple, l'objet `document` qui représente le document lui-même, l'objet `table` qui implémente l'interface DOM particulière `HTMLTableElement` permettant d'accéder aux tables HTML, etc.). Cette documentation fournit une référence, objet par objet, du DOM implémenté dans les navigateurs basés sur Gecko.
-<h2 id="dom_and_javascript">DOM et JavaScript</h2>
+## DOM et JavaScript
-<p>Le court exemple ci-dessus, comme presque tous les exemples de cette référence, est en <a href="/fr/docs/Web/JavaScript">JavaScript</a>. C'est-à-dire qu'il est<em> écrit</em> en JavaScript, mais qu'il<em> utilise</em> le DOM pour accéder au document et à ses éléments. Le DOM n'est pas un langage de programmation, mais sans lui le langage JavaScript n'aurait aucun modèle ni aucune notion des pages Web, des documents XML, et des éléments pour lesquels il est généralement utilisé. Chaque élément d'un document, que ce soit le document lui-même, ses en-têtes, les tableaux internes au document, les en-têtes de colonnes et le texte contenu dans les cellules de ces tableaux, fait partie du modèle objet de document (DOM) de ce document. Tous ces éléments sont donc accessibles et peuvent être manipulés à l'aide du DOM et d'un langage de script comme JavaScript.</p>
+Le court exemple ci-dessus, comme presque tous les exemples de cette référence, est en [JavaScript](/fr/docs/Web/JavaScript). C'est-à-dire qu'il est _écrit_ en JavaScript, mais qu'il _utilise_ le DOM pour accéder au document et à ses éléments. Le DOM n'est pas un langage de programmation, mais sans lui le langage JavaScript n'aurait aucun modèle ni aucune notion des pages Web, des documents XML, et des éléments pour lesquels il est généralement utilisé. Chaque élément d'un document, que ce soit le document lui-même, ses en-têtes, les tableaux internes au document, les en-têtes de colonnes et le texte contenu dans les cellules de ces tableaux, fait partie du modèle objet de document (DOM) de ce document. Tous ces éléments sont donc accessibles et peuvent être manipulés à l'aide du DOM et d'un langage de script comme JavaScript.
-<p>À l'origine, JavaScript et le DOM étaient fortement liés, mais ils ont fini par évoluer en deux entités distinctes. Le contenu de la page est stocké dans le DOM et on peut y accéder et le manipuler via JavaScript, de la sorte qu'on pourrait écrire cette équation approximative :</p>
+À l'origine, JavaScript et le DOM étaient fortement liés, mais ils ont fini par évoluer en deux entités distinctes. Le contenu de la page est stocké dans le DOM et on peut y accéder et le manipuler via JavaScript, de la sorte qu'on pourrait écrire cette équation approximative :
-<p>API(page Web ou XML) = DOM + JS(langage de script)</p>
+API(page Web ou XML) = DOM + JS(langage de script)
-<p>Le DOM a été conçu pour être indépendant de tout langage de programmation, ce qui rend la représentation structurelle du document disponible à l'aide d'une API simple et cohérente. Bien que cette documentation de référence se concentre uniquement sur JavaScript, des implémentations du DOM peuvent être construites pour n'importe quel langage, comme le démontre cet exemple en Python :</p>
+Le DOM a été conçu pour être indépendant de tout langage de programmation, ce qui rend la représentation structurelle du document disponible à l'aide d'une API simple et cohérente. Bien que cette documentation de référence se concentre uniquement sur JavaScript, des implémentations du DOM peuvent être construites pour n'importe quel langage, comme le démontre cet exemple en Python :
-<pre class="brush: python"># Exemple d'utilisation du DOM en Python
+```python
+# Exemple d'utilisation du DOM en Python
import xml.dom.minidom as m
doc = m.parse("C:\\Projects\\Py\\chap1.xml");
doc.nodeName # Propriété DOM de l'objet document;
p_list = doc.getElementsByTagName("para");
-</pre>
+```
-<p>Pour plus d'informations sur ce que ces techniques impliquent dans l'écriture de JavaScript sur le web, voir <a href="/fr/docs/Web/JavaScript/JavaScript_technologies_overview">Survol des technologies JavaScript</a>.</p>
+Pour plus d'informations sur ce que ces techniques impliquent dans l'écriture de JavaScript sur le web, voir [Survol des technologies JavaScript](/fr/docs/Web/JavaScript/JavaScript_technologies_overview).
-<h2 id="how_do_i_access_the_dom">Méthodes d'accès au DOM</h2>
+## Méthodes d'accès au DOM
-<p>Il n'y a rien de particulier à faire pour commencer à utiliser le DOM. Les différents navigateurs ont différentes implémentations du DOM, et celles-ci présentent des degrés divers de conformité au standard DOM de référence (un sujet que l'on tente d'éviter dans cette documentation), mais chacun d'entre eux utilise un modèle objet de document pour rendre les pages Web accessibles aux scripts.</p>
+Il n'y a rien de particulier à faire pour commencer à utiliser le DOM. Les différents navigateurs ont différentes implémentations du DOM, et celles-ci présentent des degrés divers de conformité au standard DOM de référence (un sujet que l'on tente d'éviter dans cette documentation), mais chacun d'entre eux utilise un modèle objet de document pour rendre les pages Web accessibles aux scripts.
-<p>Lorsque vous créez un script, qu'il figure au sein de la page dans un élément <code>&lt;SCRIPT&gt;</code> ou soit inclus au moyen d'une instruction de chargement de script, vous pouvez immédiatement commencer à utiliser l'API. En accédant aux éléments <code><a href="/fr/docs/Web/API/Document">document</a></code> ou <code><a href="/fr/docs/Web/API/Window">window</a></code>, vous pouvez manipuler le document lui-même ou parcourir les enfants de ces éléments, qui sont les divers éléments de la page Web. Votre programmation DOM peut être très simple, comme l'exemple suivant qui affiche un message d'avertissement à l'aide de la fonction <code><a href="/fr/docs/Web/API/Window/alert">alert()</a></code> de l'objet <code><a href="/fr/docs/Web/API/Window">window</a></code>, ou peut utiliser des méthodes DOM plus sophistiquées pour créer du nouveau contenu comme dans l'exemple plus bas.</p>
+Lorsque vous créez un script, qu'il figure au sein de la page dans un élément `<SCRIPT>` ou soit inclus au moyen d'une instruction de chargement de script, vous pouvez immédiatement commencer à utiliser l'API. En accédant aux éléments [`document`](/fr/docs/Web/API/Document) ou [`window`](/fr/docs/Web/API/Window), vous pouvez manipuler le document lui-même ou parcourir les enfants de ces éléments, qui sont les divers éléments de la page Web. Votre programmation DOM peut être très simple, comme l'exemple suivant qui affiche un message d'avertissement à l'aide de la fonction [`alert()`](/fr/docs/Web/API/Window/alert) de l'objet [`window`](/fr/docs/Web/API/Window), ou peut utiliser des méthodes DOM plus sophistiquées pour créer du nouveau contenu comme dans l'exemple plus bas.
-<p>Le code JavaScript suivant affichera une alerte quand le document est chargé (et quand le DOM entier est disponible à l'utilisation).</p>
+Le code JavaScript suivant affichera une alerte quand le document est chargé (et quand le DOM entier est disponible à l'utilisation).
-<pre class="brush: html">&lt;body onload="window.alert('Bienvenue sur ma page Web !');"&gt;</pre>
+```html
+<body onload="window.alert('Bienvenue sur ma page Web !');">
+```
-<p>Un autre exemple. Cette fonction crée un nouvel élément H1, y ajoute du texte, et ajoute ensuite cet élément à l'arbre du document :</p>
+Un autre exemple. Cette fonction crée un nouvel élément H1, y ajoute du texte, et ajoute ensuite cet élément à l'arbre du document :
-<pre class="brush: html">&lt;html&gt;
- &lt;head&gt;
- &lt;script&gt;
+```html
+<html>
+ <head>
+ <script>
// run this function when the document is loaded
window.onload = function() {
@@ -76,167 +81,219 @@ p_list = doc.getElementsByTagName("para");
heading.appendChild(heading_text);
document.body.appendChild(heading);
}
- &lt;/script&gt;
- &lt;/head&gt;
- &lt;body&gt;
- &lt;/body&gt;
-&lt;/html&gt;
-</pre>
+ </script>
+ </head>
+ <body>
+ </body>
+</html>
+```
-<h2 id="important_data_types">Types de données fondamentaux</h2>
+## Types de données fondamentaux
-<p>Cette référence tente de décrire les différents objets et types de la manière la plus simple possible. Mais il y a un certain nombre de types de données utilisées par l'API que vous devez connaître.</p>
+Cette référence tente de décrire les différents objets et types de la manière la plus simple possible. Mais il y a un certain nombre de types de données utilisées par l'API que vous devez connaître.
-<div class="note">
-<p><strong>Note :</strong> Parce que la vaste majorité de codes qui utilisent le DOM gravitent autour de la manipulation de documents HTML, il est courant de toujours se référer aux nœuds du DOM comme éléments, étant donné que dans le document HTML, chaque nœud est un élément. Bien que n'étant pas strictement exact, la documentation que vous trouverez dans MDN fera souvent la même chose, à cause de la fréquence de cette hypothèse.</p>
-</div>
+> **Note :** Parce que la vaste majorité de codes qui utilisent le DOM gravitent autour de la manipulation de documents HTML, il est courant de toujours se référer aux nœuds du DOM comme éléments, étant donné que dans le document HTML, chaque nœud est un élément. Bien que n'étant pas strictement exact, la documentation que vous trouverez dans MDN fera souvent la même chose, à cause de la fréquence de cette hypothèse.
-<p><strong>NDTR: </strong>(Pour simplifier, les exemples de syntaxe présentés dans cette référence se réfèreront aux nœuds en les appelant <code>elements</code>, aux tableaux de nœuds en tant que <code>nodeLists</code> (ou même simplement éléments), et aux nœuds d'attributs en tant qu'<code>attributes)</code>.</p>
+**NDTR:** (Pour simplifier, les exemples de syntaxe présentés dans cette référence se réfèreront aux nœuds en les appelant `elements`, aux tableaux de nœuds en tant que `nodeLists` (ou même simplement éléments), et aux nœuds d'attributs en tant qu'`attributes)`.
-<p>Le tableau suivant décrit brièvement ces types de données.</p>
+Le tableau suivant décrit brièvement ces types de données.
<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">Type de donnée (Interface)</th>
- <th scope="col">Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>{{domxref("Document")}}</td>
- <td>Lorsqu'un membre renvoie un objet de type <code>document</code> (par exemple la propriété <strong>ownerDocument</strong> d'un élément, qui retourne le <code>document</code> auquel il appartient), cet objet est l'objet <code>document</code> racine lui-même. Le chapitre <a href="/fr/docs/Web/API/Document">référence de DOM <code>document</code></a> décrit l'objet <code>document</code> en détail.</td>
- </tr>
- <tr>
- <td>{{domxref("Node")}}</td>
- <td>Chaque objet du document est sous une forme ou une autre un noeud. Dans un document HTML, un objet peût être un élément nœud, mais aussi un nœud text ou nœud attribut.</td>
- </tr>
- <tr>
- <td>{{domxref("Element")}}</td>
- <td>Le type élément est basé sur le nœud. Il se réfère à un élément ou nœud de type élément renvoyé par un membre de l'API DOM. Plutôt que de dire, par exemple que la méthode <a href="/fr/docs/Web/API/Document/createElement">document.createElement()</a> renvoie une réference à un objet de type nœud, nous dirons simplement que cette méthode renvoie l'élément qui vient juste d'être créer dans le DOM. Les objets element implémentent l'interface DOM element, mais aussi l'interface plus basique node, qui sont toutes les deux incluses dans cette réference. dans un document HTML, les éléments sont mis en valeur par l'interface API HTML DOM {{domxref("HTMLElement")}} aussi bien que par d'autres interfaces décrivant les capacités d'éléments spécifiques ( par exemple , {{domxref("HTMLTableElement")}} for {{HTMLElement("table")}} elements).</td>
- </tr>
- <tr>
- <td>{{domxref("NodeList")}}</td>
- <td>Une <code>nodeList</code> est un tableau d'éléments, comme celui qui est renvoyé par la méthode <a href="/fr/docs/Web/API/Document/getElementsByTagName">document.getElementsByTagName()</a>. Les éléments d'une <code>nodeList</code> sont accessibles par un index de deux manières différentes :
- <ul>
- <li>list.item(1)</li>
- <li>list[1]</li>
- </ul>
-
- <p>Ces deux lignes sont équivalentes. Dans la première, <strong>item()</strong> est la méthode de l'objet <code>nodeList</code>. La seconde utilise la syntaxe habituelle d'un tableau pour accéder au second élément de la liste.</p>
- </td>
- </tr>
- <tr>
- <td>{{domxref("Attribute")}}</td>
- <td>Lorsqu'un <code>attribute</code> est renvoyé par un membre (par exemple par la méthode <strong>createAttribute()</strong>), il s'agit d'une référence à un objet qui expose une interface particulière (et limitée) aux attributs. Les attributs sont des nœuds dans le DOM tout comme les éléments, mais ils seront rarement utilisés de cette manière.</td>
- </tr>
- <tr>
- <td>{{domxref("NamedNodeMap")}}</td>
- <td>Une <code>namedNodeMap</code> est comme un tableau, mais où l'on peut accéder aux éléments à la fois par nom ou par index. Cette dernière possibilité est cependant juste là pour faciliter l'énumération, car la liste n'est pas dans un ordre particulier. Une <code>namedNodeMap</code> a une méthode item() pour la même raison, et il est également possible d'ajouter et de retirer des élements d'une <code>namedNodeMap</code>.</td>
- </tr>
- </tbody>
+ <thead>
+ <tr>
+ <th scope="col">Type de donnée (Interface)</th>
+ <th scope="col">Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{domxref("Document")}}</td>
+ <td>
+ Lorsqu'un membre renvoie un objet de type <code>document</code> (par
+ exemple la propriété <strong>ownerDocument</strong> d'un élément, qui
+ retourne le <code>document</code> auquel il appartient), cet objet est
+ l'objet <code>document</code> racine lui-même. Le chapitre
+ <a href="/fr/docs/Web/API/Document"
+ >référence de DOM <code>document</code></a
+ >
+ décrit l'objet <code>document</code> en détail.
+ </td>
+ </tr>
+ <tr>
+ <td>{{domxref("Node")}}</td>
+ <td>
+ Chaque objet du document est sous une forme ou une autre un noeud. Dans
+ un document HTML, un objet peût être un élément nœud, mais aussi un nœud
+ text ou nœud attribut.
+ </td>
+ </tr>
+ <tr>
+ <td>{{domxref("Element")}}</td>
+ <td>
+ Le type élément est basé sur le nœud. Il se réfère à un élément ou nœud
+ de type élément renvoyé par un membre de l'API DOM. Plutôt que de dire,
+ par exemple que la méthode
+ <a href="/fr/docs/Web/API/Document/createElement"
+ >document.createElement()</a
+ >
+ renvoie une réference à un objet de type nœud, nous dirons simplement
+ que cette méthode renvoie l'élément qui vient juste d'être créer dans le
+ DOM. Les objets element implémentent l'interface DOM element, mais aussi
+ l'interface plus basique node, qui sont toutes les deux incluses dans
+ cette réference. dans un document HTML, les éléments sont mis en valeur
+ par l'interface API HTML DOM {{domxref("HTMLElement")}} aussi
+ bien que par d'autres interfaces décrivant les capacités d'éléments
+ spécifiques ( par exemple , {{domxref("HTMLTableElement")}} for
+ {{HTMLElement("table")}} elements).
+ </td>
+ </tr>
+ <tr>
+ <td>{{domxref("NodeList")}}</td>
+ <td>
+ Une <code>nodeList</code> est un tableau d'éléments, comme celui qui est
+ renvoyé par la méthode
+ <a href="/fr/docs/Web/API/Document/getElementsByTagName"
+ >document.getElementsByTagName()</a
+ >. Les éléments d'une <code>nodeList</code> sont accessibles par un
+ index de deux manières différentes :
+ <ul>
+ <li>list.item(1)</li>
+ <li>list[1]</li>
+ </ul>
+ <p>
+ Ces deux lignes sont équivalentes. Dans la première,
+ <strong>item()</strong> est la méthode de l'objet
+ <code>nodeList</code>. La seconde utilise la syntaxe habituelle d'un
+ tableau pour accéder au second élément de la liste.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>{{domxref("Attribute")}}</td>
+ <td>
+ Lorsqu'un <code>attribute</code> est renvoyé par un membre (par exemple
+ par la méthode <strong>createAttribute()</strong>), il s'agit d'une
+ référence à un objet qui expose une interface particulière (et limitée)
+ aux attributs. Les attributs sont des nœuds dans le DOM tout comme les
+ éléments, mais ils seront rarement utilisés de cette manière.
+ </td>
+ </tr>
+ <tr>
+ <td>{{domxref("NamedNodeMap")}}</td>
+ <td>
+ Une <code>namedNodeMap</code> est comme un tableau, mais où l'on peut
+ accéder aux éléments à la fois par nom ou par index. Cette dernière
+ possibilité est cependant juste là pour faciliter l'énumération, car la
+ liste n'est pas dans un ordre particulier. Une
+ <code>namedNodeMap</code> a une méthode item() pour la même raison, et
+ il est également possible d'ajouter et de retirer des élements d'une
+ <code>namedNodeMap</code>.
+ </td>
+ </tr>
+ </tbody>
</table>
-<h2 id="dom_interfaces">Les interfaces DOM</h2>
+## Les interfaces DOM
-<p>Un des objectifs de ce guide est de ne pas trop parler de l'héritage abstrait d'interfaces, et d'autres détails d'implémentation, et de se concentrer plutôt sur les objets dans le DOM qui sont les<em>choses</em> réelles utilisables pour manipuler la hiérarchie du DOM. Du point de vue du programmeur Web, il est rarement utile de savoir que l'objet représentant l'élément <code>HTML FORM</code> reçoit sa propriété <strong>name</strong> de l'interface <code>HTMLElement</code>. Dans les deux cas, la propriété désirée est simplement l'objet de formulaire.</p>
+Un des objectifs de ce guide est de ne pas trop parler de l'héritage abstrait d'interfaces, et d'autres détails d'implémentation, et de se concentrer plutôt sur les objets dans le DOM qui sont les*choses* réelles utilisables pour manipuler la hiérarchie du DOM. Du point de vue du programmeur Web, il est rarement utile de savoir que l'objet représentant l'élément `HTML FORM` reçoit sa propriété **name** de l'interface `HTMLElement`. Dans les deux cas, la propriété désirée est simplement l'objet de formulaire.
-<p>Cependant, la relation entre les objets et les interfaces qu'ils implémentent dans le DOM peut entrainer une certaine confusion, c'est pourquoi cette section tente de présenter un tant soit peu les interfaces figurant dans la spécification du DOM et la manière dont elles sont rendues disponibles.</p>
+Cependant, la relation entre les objets et les interfaces qu'ils implémentent dans le DOM peut entrainer une certaine confusion, c'est pourquoi cette section tente de présenter un tant soit peu les interfaces figurant dans la spécification du DOM et la manière dont elles sont rendues disponibles.
-<h3 id="interfaces_and_objects">Les interfaces et les objets</h3>
+### Les interfaces et les objets
-<p>De nombreux objets empruntent à plusieurs interfaces différentes. L'objet table par exemple implémente une <a href="/fr/docs/Web/API/HTMLTableElement">interface spécialisée de l'élément HTML Table</a>, qui comprend des méthodes telles que <code>createCaption</code> et <code>insertRow</code>. Mais comme il s'agit également d'un élément HTML, <code>table</code> implémente aussi l'interface <code>Element</code> décrite dans le chapitre <a href="/fr/docs/Web/API/Element">Référence de DOM <code>element</code></a>. Enfin, comme un élément HTML est, du point de vue du DOM, un nœud au sein de l'arbre de nœuds qui forment le modèle objet pour une page HTML ou XML, l'objet table implémente aussi l'interface plus basique <code>Node</code>, dont dérive <code>Element</code>.</p>
+De nombreux objets empruntent à plusieurs interfaces différentes. L'objet table par exemple implémente une [interface spécialisée de l'élément HTML Table](/fr/docs/Web/API/HTMLTableElement), qui comprend des méthodes telles que `createCaption` et `insertRow`. Mais comme il s'agit également d'un élément HTML, `table` implémente aussi l'interface `Element` décrite dans le chapitre [Référence de DOM `element`](/fr/docs/Web/API/Element). Enfin, comme un élément HTML est, du point de vue du DOM, un nœud au sein de l'arbre de nœuds qui forment le modèle objet pour une page HTML ou XML, l'objet table implémente aussi l'interface plus basique `Node`, dont dérive `Element`.
-<p>Lorsque vous obtiendrez une référence à un objet <code>table</code>, comme dans l'exemple suivant, vous utiliserez régulièrement ces trois interfaces de manière interchangeable sur l'objet, peut-être même sans le savoir.</p>
+Lorsque vous obtiendrez une référence à un objet `table`, comme dans l'exemple suivant, vous utiliserez régulièrement ces trois interfaces de manière interchangeable sur l'objet, peut-être même sans le savoir.
-<pre class="brush: js">var table = document.getElementById("table");
+```js
+var table = document.getElementById("table");
var tableAttrs = table.attributes; // Interface Node/Element
-for(var i = 0; i &lt; tableAttrs.length; i++){
+for(var i = 0; i < tableAttrs.length; i++){
// Interface HTMLTableElement : attribut border
if(tableAttrs[i].nodeName.toLowerCase() == "border")
table.border = "1";
}
// Interface HTMLTableElement : attribut summary
table.summary = "note : bordure plus large";
-</pre>
+```
-<h3 id="core_interfaces_in_the_dom">Interfaces essentielles du DOM</h3>
+### Interfaces essentielles du DOM
-<p>Cette section liste certaines des interfaces les plus couramment utilisées dans le DOM. L'idée n'est pas ici de décrire ce que font ces API, mais de vous donner une idée des sortes de méthodes et propriétés que vous verrez très souvent en utilisant le DOM. Ces API communes sont utilisées dans les exemples plus longs du chapitre <a href="/fr/docs/Web/API/Document_Object_Model/Examples">Exemples d'utilisation du DOM</a> à la fin de livre.</p>
+Cette section liste certaines des interfaces les plus couramment utilisées dans le DOM. L'idée n'est pas ici de décrire ce que font ces API, mais de vous donner une idée des sortes de méthodes et propriétés que vous verrez très souvent en utilisant le DOM. Ces API communes sont utilisées dans les exemples plus longs du chapitre [Exemples d'utilisation du DOM](/fr/docs/Web/API/Document_Object_Model/Examples) à la fin de livre.
-<p>Les objets <code>document</code> et <code>window</code> sont ceux dont les interfaces sont les plus souvent utilisées dans la programmation DOM. En termes simples, l'objet <code>window</code> représente quelque chose comme le navigateur, et l'objet <code>document</code> est la racine du document lui-même. <code>Element</code> hérite de l'interface générique <code>Node</code>, et ensemble ces deux interfaces fournissent un grand nombre des méthodes et propriétés utilisables sur des éléments individuels. Ces éléments peuvent également avoir des interfaces spécifiques pour traiter le type de données que ces éléments contiennent, comme dans l'objet <code>table</code> donné en exemple dans la section précédente.</p>
+Les objets `document` et `window` sont ceux dont les interfaces sont les plus souvent utilisées dans la programmation DOM. En termes simples, l'objet `window` représente quelque chose comme le navigateur, et l'objet `document` est la racine du document lui-même. `Element` hérite de l'interface générique `Node`, et ensemble ces deux interfaces fournissent un grand nombre des méthodes et propriétés utilisables sur des éléments individuels. Ces éléments peuvent également avoir des interfaces spécifiques pour traiter le type de données que ces éléments contiennent, comme dans l'objet `table` donné en exemple dans la section précédente.
-<p>Ce qui suit est une brève liste des API communes au script de page dans le Web et XML utilisant le DOM.</p>
+Ce qui suit est une brève liste des API communes au script de page dans le Web et XML utilisant le DOM.
-<ul>
- <li><code>{{domxref("document.getElementById", "", "", "1")}}(id)</code></li>
- <li><code>document.{{domxref("Element.getElementsByTagName", "getElementsByTagName", "", "1")}}(name)</code></li>
- <li><code>{{domxref("document.createElement", "", "", "1")}}(name)</code></li>
- <li><code>parentNode.{{domxref("Node.appendChild", "appendChild", "", "1")}}(node)</code></li>
- <li><code>element.{{domxref("element.innerHTML", "innerHTML", "", "1")}}</code></li>
- <li><code>element.{{domxref("HTMLElement.style", "style", "", "1")}}.left</code></li>
- <li><code>element.{{domxref("element.setAttribute", "setAttribute", "", "1")}}()</code></li>
- <li><code>element.{{domxref("element.getAttribute", "getAttribute", "", "1")}}()</code></li>
- <li><code>element.{{domxref("EventTarget.addEventListener", "addEventListener", "", "1")}}()</code></li>
- <li><code>{{domxref("window.content", "", "", "1")}}</code></li>
- <li><code>{{domxref("window.onload", "", "", "1")}}</code></li>
- <li><code>{{domxref("console.log", "", "", "1")}}()</code></li>
- <li><code>{{domxref("window.scrollTo", "", "", "1")}}()</code></li>
-</ul>
+- `{{domxref("document.getElementById", "", "", "1")}}(id)`
+- `document.{{domxref("Element.getElementsByTagName", "getElementsByTagName", "", "1")}}(name)`
+- `{{domxref("document.createElement", "", "", "1")}}(name)`
+- `parentNode.{{domxref("Node.appendChild", "appendChild", "", "1")}}(node)`
+- `element.{{domxref("element.innerHTML", "innerHTML", "", "1")}}`
+- `element.{{domxref("HTMLElement.style", "style", "", "1")}}.left`
+- `element.{{domxref("element.setAttribute", "setAttribute", "", "1")}}()`
+- `element.{{domxref("element.getAttribute", "getAttribute", "", "1")}}()`
+- `element.{{domxref("EventTarget.addEventListener", "addEventListener", "", "1")}}()`
+- `{{domxref("window.content", "", "", "1")}}`
+- `{{domxref("window.onload", "", "", "1")}}`
+- `{{domxref("console.log", "", "", "1")}}()`
+- `{{domxref("window.scrollTo", "", "", "1")}}()`
-<h2 id="testing_the_dom_api">Test de l'API DOM</h2>
+## Test de l'API DOM
-<p>Ce document fournit des exemples pour chaque interface utilisable dans le cadre de votre propre développement Web. Dans certains cas, les exemples sont des pages HTML complètes, avec l'accès au DOM dans un élément &lt;script&gt;, l'interface (comme les boutons) nécessaire pour lancer le script dans un formulaire, et les éléments HTML sur lesquels le DOM opère sont listés également. Lorsque c'est le cas, vous pouvez copier et coller l'exemple dans un nouveau document HTML, l'enregistrer et l'exécuter depuis un navigateur.</p>
+Ce document fournit des exemples pour chaque interface utilisable dans le cadre de votre propre développement Web. Dans certains cas, les exemples sont des pages HTML complètes, avec l'accès au DOM dans un élément \<script>, l'interface (comme les boutons) nécessaire pour lancer le script dans un formulaire, et les éléments HTML sur lesquels le DOM opère sont listés également. Lorsque c'est le cas, vous pouvez copier et coller l'exemple dans un nouveau document HTML, l'enregistrer et l'exécuter depuis un navigateur.
-<p>Il y a cependant certains cas où les exemples sont plus concis. Pour exécuter les exemples qui démontrent seulement la relation basique entre l'interface et les éléments HTML, il peut être utile de mettre en place une page de test dans laquelle les interfaces peuvent être accédées facilement par des scriptes. La page suivante, très simple, fournit un élément &lt;script&gt; dans l'entête dans lequel vous pouvez placer les fonctions qui testent l'interface voulue, quelques éléments HTML avec des attributs que vous pouvez lire, modifier ou manipuler de quelque manière que ce soit, et l'interface utilisateur Web nécessaire pour appeler toutes ces fonctions depuis le navigateur.</p>
+Il y a cependant certains cas où les exemples sont plus concis. Pour exécuter les exemples qui démontrent seulement la relation basique entre l'interface et les éléments HTML, il peut être utile de mettre en place une page de test dans laquelle les interfaces peuvent être accédées facilement par des scriptes. La page suivante, très simple, fournit un élément \<script> dans l'entête dans lequel vous pouvez placer les fonctions qui testent l'interface voulue, quelques éléments HTML avec des attributs que vous pouvez lire, modifier ou manipuler de quelque manière que ce soit, et l'interface utilisateur Web nécessaire pour appeler toutes ces fonctions depuis le navigateur.
-<p>Vous pouvez utiliser cette page de test ou en créer une semblable pour tester les interfaces DOM qui vous intéressent et voir comment elles fonctionnent sur la plateforme du navigateur. Vous pouvez mettre à jour le contenu de la fonction <code>test()</code>, créer plus de boutons, ou ajouter d'autres éléments si nécessaire.</p>
+Vous pouvez utiliser cette page de test ou en créer une semblable pour tester les interfaces DOM qui vous intéressent et voir comment elles fonctionnent sur la plateforme du navigateur. Vous pouvez mettre à jour le contenu de la fonction `test()`, créer plus de boutons, ou ajouter d'autres éléments si nécessaire.
-<pre class="brush: html">&lt;html&gt;
-&lt;head&gt;
- &lt;title&gt;Tests du DOM&lt;/title&gt;
- &lt;script type="application/x-javascript"&gt;
+```html
+<html>
+<head>
+ <title>Tests du DOM</title>
+ <script type="application/x-javascript">
function setBodyAttr(attr,value){
if(document.body) eval('document.body.'+attr+'="'+value+'"');
else notSupported();
}
- &lt;/script&gt;
-&lt;/head&gt;
-&lt;body&gt;
- &lt;div style="margin: .5in; height="400""&gt;
- &lt;p&gt;&lt;b&gt;&lt;tt&gt;text&lt;/tt&gt; color&lt;/p&gt;
- &lt;form&gt;
- &lt;select onChange="setBodyAttr('text',
- this.options[this.selectedIndex].value);"&gt;
- &lt;option value="black"&gt;black
- &lt;option value="darkblue"&gt;darkblue
- &lt;/select&gt;
- &lt;p&gt;&lt;b&gt;&lt;tt&gt;bgColor&lt;/tt&gt;&lt;/p&gt;
- &lt;select onChange="setBodyAttr('bgColor',
- this.options[this.selectedIndex].value);"&gt;
- &lt;option value="white"&gt;white
- &lt;option value="lightgrey"&gt;gray
- &lt;/select&gt;
- &lt;p&gt;&lt;b&gt;&lt;tt&gt;link&lt;/tt&gt;&lt;/p&gt;
- &lt;select onChange="setBodyAttr('link',
- this.options[this.selectedIndex].value);"&gt;
- &lt;option value="blue"&gt;blue
- &lt;option value="green"&gt;green
- &lt;/select&gt; &lt;small&gt;
- &lt;a href="http://www.brownhen.com/dom_api_top.html" id="sample"&gt;
- (exemple de lien)&lt;/a&gt;&lt;/small&gt;&lt;br&gt;
- &lt;/form&gt;
- &lt;form&gt;
- &lt;input type="button" value="version" onclick="ver()" /&gt;
- &lt;/form&gt;
- &lt;/div&gt;
-&lt;/body&gt;
-&lt;/html&gt;</pre>
-
-<p>Pour tester un grand nombre d'interfaces dans une seule page, par exemple une « suite » de propriétés affectant les couleurs d'une page Web, vous pouvez créer une page de test semblable avec une console complète de boutons, de champs de texte et d'autres élements HTML. La capture d'écran suivante vous donnera une idée de comment les interfaces peuvent être regroupées à des fins de test.</p>
-
-<p>Figure 0.1 Exemple de page de test du DOM</p>
-
-<p><img alt="" src="dom_ref_introduction_to_the_dom.gif"></p>
-
-<p>Dans cet exemple, les menus déroulants mettent à jour dynamiquement les aspects de la page web accessibles au DOM comme sa couleur de fond (<code>bgColor</code>), la couleur des hyperliens (<code>aLink</code>) et la couleur du texte (<code>text</code>). Cependant, lorsque vous concevez vos pages de test, tester les interfaces au fur et à mesure que vous les lisez est une partie importante de l'apprentissage de l'utilisation efficace du DOM.</p>
+ </script>
+</head>
+<body>
+ <div style="margin: .5in; height="400"">
+ <p><b><tt>text</tt> color</p>
+ <form>
+ <select onChange="setBodyAttr('text',
+ this.options[this.selectedIndex].value);">
+ <option value="black">black
+ <option value="darkblue">darkblue
+ </select>
+ <p><b><tt>bgColor</tt></p>
+ <select onChange="setBodyAttr('bgColor',
+ this.options[this.selectedIndex].value);">
+ <option value="white">white
+ <option value="lightgrey">gray
+ </select>
+ <p><b><tt>link</tt></p>
+ <select onChange="setBodyAttr('link',
+ this.options[this.selectedIndex].value);">
+ <option value="blue">blue
+ <option value="green">green
+ </select> <small>
+ <a href="http://www.brownhen.com/dom_api_top.html" id="sample">
+ (exemple de lien)</a></small><br>
+ </form>
+ <form>
+ <input type="button" value="version" onclick="ver()" />
+ </form>
+ </div>
+</body>
+</html>
+```
+
+Pour tester un grand nombre d'interfaces dans une seule page, par exemple une « suite » de propriétés affectant les couleurs d'une page Web, vous pouvez créer une page de test semblable avec une console complète de boutons, de champs de texte et d'autres élements HTML. La capture d'écran suivante vous donnera une idée de comment les interfaces peuvent être regroupées à des fins de test.
+
+Figure 0.1 Exemple de page de test du DOM
+
+![](dom_ref_introduction_to_the_dom.gif)
+
+Dans cet exemple, les menus déroulants mettent à jour dynamiquement les aspects de la page web accessibles au DOM comme sa couleur de fond (`bgColor`), la couleur des hyperliens (`aLink`) et la couleur du texte (`text`). Cependant, lorsque vous concevez vos pages de test, tester les interfaces au fur et à mesure que vous les lisez est une partie importante de l'apprentissage de l'utilisation efficace du DOM.