diff options
author | julieng <julien.gattelier@gmail.com> | 2021-10-02 17:20:24 +0200 |
---|---|---|
committer | SphinxKnight <SphinxKnight@users.noreply.github.com> | 2021-10-02 17:30:20 +0200 |
commit | 1407c8fdef01ecd0ffb8a8bd46e7113f119b9fde (patch) | |
tree | 30a56efd3eff3a01bd1611e1840fdbbfacf544a4 /files/fr/web/api/history_api | |
parent | c05efa8d7ae464235cf83d7c0956e42dc6974103 (diff) | |
download | translated-content-1407c8fdef01ecd0ffb8a8bd46e7113f119b9fde.tar.gz translated-content-1407c8fdef01ecd0ffb8a8bd46e7113f119b9fde.tar.bz2 translated-content-1407c8fdef01ecd0ffb8a8bd46e7113f119b9fde.zip |
convert content to md
Diffstat (limited to 'files/fr/web/api/history_api')
-rw-r--r-- | files/fr/web/api/history_api/example/index.md | 244 | ||||
-rw-r--r-- | files/fr/web/api/history_api/index.md | 206 |
2 files changed, 220 insertions, 230 deletions
diff --git a/files/fr/web/api/history_api/example/index.md b/files/fr/web/api/history_api/example/index.md index 82c3fa5b38..9cd519d263 100644 --- a/files/fr/web/api/history_api/example/index.md +++ b/files/fr/web/api/history_api/example/index.md @@ -4,143 +4,147 @@ slug: Web/API/History_API/Example translation_of: Web/API/History_API/Example original_slug: Web/Guide/DOM/Manipuler_historique_du_navigateur/Example --- -<p>Voici un exemple de site web AJAX composé uniquement de trois pages (<em>page_un.php</em>, <em>page_deux.php</em> et <em>page_trois.php</em>). Pour tester cet exemple, merci de créer les fichiers suivants :</p> +Voici un exemple de site web AJAX composé uniquement de trois pages (_page_un.php_, *page_deux.php* et *page_trois.php*). Pour tester cet exemple, merci de créer les fichiers suivants : -<p><strong>page_un.php</strong>:</p> +**page_un.php**: -<pre class="brush: php"><?php +```php +<?php $page_title = "Page un"; $as_json = false; - if (isset($_GET["view_as"]) && $_GET["view_as"] == "json") { + if (isset($_GET["view_as"]) && $_GET["view_as"] == "json") { $as_json = true; ob_start(); } else { -?> -<!doctype html> -<html> -<head> -<?php +?> +<!doctype html> +<html> +<head> +<?php include "include/header.php"; - echo "<title>" . $page_title . "</title>"; -?> -</head> + echo "<title>" . $page_title . "</title>"; +?> +</head> -<body> +<body> -<?php include "include/before_content.php"; ?> +<?php include "include/before_content.php"; ?> -<p>This paragraph is shown only when the navigation starts from <strong>first_page.php</strong>.</p> +<p>This paragraph is shown only when the navigation starts from <strong>first_page.php</strong>.</p> -<div id="ajax-content"> -<?php } ?> +<div id="ajax-content"> +<?php } ?> - <p>This is the content of <strong>first_page.php</strong>.</p> + <p>This is the content of <strong>first_page.php</strong>.</p> -<?php +<?php if ($as_json) { - echo json_encode(array("page" => $page_title, "content" => ob_get_clean())); + echo json_encode(array("page" => $page_title, "content" => ob_get_clean())); } else { -?> -</div> +?> +</div> -<p>This paragraph is shown only when the navigation starts from <strong>first_page.php</strong>.</p> +<p>This paragraph is shown only when the navigation starts from <strong>first_page.php</strong>.</p> -<?php +<?php include "include/after_content.php"; - echo "</body>\n</html>"; + echo "</body>\n</html>"; } -?> -</pre> +?> +``` -<p><strong>page_deux.php</strong>:</p> +**page_deux.php**: -<pre class="brush: php"><?php +```php +<?php $page_title = "Page deux"; $as_json = false; - if (isset($_GET["view_as"]) && $_GET["view_as"] == "json") { + if (isset($_GET["view_as"]) && $_GET["view_as"] == "json") { $as_json = true; ob_start(); } else { -?> -<!doctype html> -<html> -<head> -<?php +?> +<!doctype html> +<html> +<head> +<?php include "include/header.php"; - echo "<title>" . $page_title . "</title>"; -?> -</head> + echo "<title>" . $page_title . "</title>"; +?> +</head> -<body> +<body> -<?php include "include/before_content.php"; ?> +<?php include "include/before_content.php"; ?> -<p>This paragraph is shown only when the navigation starts from <strong>second_page.php</strong>.</p> +<p>This paragraph is shown only when the navigation starts from <strong>second_page.php</strong>.</p> -<div id="ajax-content"> -<?php } ?> +<div id="ajax-content"> +<?php } ?> - <p>This is the content of <strong>second_page.php</strong>.</p> + <p>This is the content of <strong>second_page.php</strong>.</p> -<?php +<?php if ($as_json) { - echo json_encode(array("page" => $page_title, "content" => ob_get_clean())); + echo json_encode(array("page" => $page_title, "content" => ob_get_clean())); } else { -?> -</div> +?> +</div> -<p>This paragraph is shown only when the navigation starts from <strong>second_page.php</strong>.</p> +<p>This paragraph is shown only when the navigation starts from <strong>second_page.php</strong>.</p> -<?php +<?php include "include/after_content.php"; - echo "</body>\n</html>"; + echo "</body>\n</html>"; } -?> -</pre> +?> +``` -<p><strong>page_trois.php</strong>:</p> +**page_trois.php**: -<pre class="brush: php"><?php +```php +<?php $page_title = "Page trois"; - $page_content = "<p>Ceci est le contenu de la <strong>page_trois.php</strong>. Ce contenu est stocké dans une variable PHP.</p>"; + $page_content = "<p>Ceci est le contenu de la <strong>page_trois.php</strong>. Ce contenu est stocké dans une variable PHP.</p>"; - if (isset($_GET["view_as"]) && $_GET["view_as"] == "json") { - echo json_encode(array("page" => $page_title, "content" => $page_content)); + if (isset($_GET["view_as"]) && $_GET["view_as"] == "json") { + echo json_encode(array("page" => $page_title, "content" => $page_content)); } else { -?> -<!doctype html> -<html> -<head> -<?php +?> +<!doctype html> +<html> +<head> +<?php include "include/header.php"; - echo "<title>" . $page_title . "</title>"; -?> -</head> + echo "<title>" . $page_title . "</title>"; +?> +</head> -<body> +<body> -<?php include "include/before_content.php"; ?> +<?php include "include/before_content.php"; ?> -<p>This paragraph is shown only when the navigation starts from <strong>third_page.php</strong>.</p> +<p>This paragraph is shown only when the navigation starts from <strong>third_page.php</strong>.</p> -<div id="ajax-content"> -<?php echo $page_content; ?> -</div> +<div id="ajax-content"> +<?php echo $page_content; ?> +</div> -<p>This paragraph is shown only when the navigation starts from <strong>third_page.php</strong>.</p> +<p>This paragraph is shown only when the navigation starts from <strong>third_page.php</strong>.</p> -<?php +<?php include "include/after_content.php"; - echo "</body>\n</html>"; + echo "</body>\n</html>"; } -?> -</pre> +?> +``` -<p><strong>css/style.css</strong>:</p> +**css/style.css**: -<pre class="brush: css">#ajax-loader { +```css +#ajax-loader { position: fixed; display: table; top: 0; @@ -149,7 +153,7 @@ original_slug: Web/Guide/DOM/Manipuler_historique_du_navigateur/Example height: 100%; } -#ajax-loader > div { +#ajax-loader > div { display: table-cell; width: 100%; height: 100%; @@ -158,32 +162,42 @@ original_slug: Web/Guide/DOM/Manipuler_historique_du_navigateur/Example background-color: #000000; opacity: 0.65; } -</pre> -<p><strong>include/after_content.php</strong>:</p> -<pre class="brush: php"><p>Ceci est le pied-de-page. Il est commun à toutes les pages ajax.</p> -</pre> -<p><strong>include/before_content.php</strong>:</p> -<pre class="brush: php"><p> -[ <a class="ajax-nav" href="page_un.php">Premier exemple</a> -| <a class="ajax-nav" href="page_deux.php">Second exemple</a> -| <a class="ajax-nav" href="page_trois.php">Troisième exemple</a> -| <a class="ajax-nav" href="inexistante.php">Page inexistante</a> ] -</p> - -</pre> -<p><strong>include/header.php</strong>:</p> -<pre class="brush: html"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> -<script type="text/javascript" src="js/ajax_nav.js"></script> -<link rel="stylesheet" href="css/style.css" /> -</pre> -<p><strong>js/ajax_nav.js</strong>:</p> - -<pre class="brush: js">"use strict"; +``` + +**include/after_content.php**: + +```php +<p>Ceci est le pied-de-page. Il est commun à toutes les pages ajax.</p> +``` + +**include/before_content.php**: + +```php +<p> +[ <a class="ajax-nav" href="page_un.php">Premier exemple</a> +| <a class="ajax-nav" href="page_deux.php">Second exemple</a> +| <a class="ajax-nav" href="page_trois.php">Troisième exemple</a> +| <a class="ajax-nav" href="inexistante.php">Page inexistante</a> ] +</p> +``` + +**include/header.php**: + +```html +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<script type="text/javascript" src="js/ajax_nav.js"></script> +<link rel="stylesheet" href="css/style.css" /> +``` + +**js/ajax_nav.js**: + +```js +"use strict"; var ajaxRequest = new (function () { function closeReq () { - oLoadingBox.parentNode && document.body.removeChild(oLoadingBox); + oLoadingBox.parentNode && document.body.removeChild(oLoadingBox); bIsLoading = false; } @@ -243,7 +257,7 @@ var ajaxRequest = new (function () { } function filterURL (sURL, sViewMode) { - return sURL.replace(rSearch, "") + ("?" + sURL.replace(rHost, "&").replace(rView, sViewMode ? "&" + sViewKey + "=" + sViewMode : "").slice(1)).replace(rEndQstMark, ""); + return sURL.replace(rSearch, "") + ("?" + sURL.replace(rHost, "&").replace(rView, sViewMode ? "&" + sViewKey + "=" + sViewMode : "").slice(1)).replace(rEndQstMark, ""); } function getPage (sPage) { @@ -278,7 +292,7 @@ var ajaxRequest = new (function () { function init () { oPageInfo.title = document.title; - for (var oLink, nIdx = 0, nLen = document.links.length; nIdx < nLen; document.links[nIdx++].onclick = processLink); + for (var oLink, nIdx = 0, nLen = document.links.length; nIdx < nLen; document.links[nIdx++].onclick = processLink); } const @@ -287,7 +301,7 @@ var ajaxRequest = new (function () { sTargetId = "ajax-content", sViewKey = "view_as", sAjaxClass = "ajax-nav", /* not customizable constants */ - rSearch = /\?.*$/, rHost = /^[^\?]*\?*&*/, rView = new RegExp("&" + sViewKey + "\\=[^&]*|&*$", "i"), rEndQstMark = /\?$/, + rSearch = /\?.*$/, rHost = /^[^\?]*\?*&*/, rView = new RegExp("&" + sViewKey + "\\=[^&]*|&*$", "i"), rEndQstMark = /\?$/, oLoadingBox = document.createElement("div"), oCover = document.createElement("div"), oLoadingImg = new Image(), oPageInfo = { title: null, @@ -383,15 +397,13 @@ var ajaxRequest = new (function () { this.rebuildLinks = init; })(); -</pre> +``` -<div class="note"> - <p><strong>Note :</strong> <a href="/en/JavaScript/Reference/Statements/const"><code>const</code></a> (instruction de constante) <strong>ne fait pas partie de ECMAScript 5</strong>. Il est supporté dans Firefox et Chrome (V8) et partiellement supporté dans Opera 9+ et Safari. <strong>Il n'est pas supporté dans Internet Explorer 6-9, ou dans la version de prévisualisation de Internet Explorer 10</strong>. <a href="/en/JavaScript/Reference/Statements/const"><code>const</code></a> sera défini par ECMAScript 6, mais avec une sémantique différente. Proches des variables déclarées avec l'instruction <a href="/en/JavaScript/Reference/Statements/let"><code>let</code></a>, les constantes déclarées avec <a href="/en/JavaScript/Reference/Statements/const"><code>const</code></a> seront limitées en portée. <strong>Nous ne l'avons utilisé que pour des raisons pédagogiques, si vous souhaitez une compatibilité maximale de ce code, merci de remplacer les références à </strong><strong><a href="/en/JavaScript/Reference/Statements/const"><code>const</code></a> par des instructions <a href="/en/JavaScript/Reference/Statements/var"><code>var</code></a>.</strong> - </p> -</div> -<p>Pour plus d'informations, voyez : <a href="/fr/docs/DOM/manipuler_lhistorique_du_navigateur">Manipuler l'historique du navigateur</a>.</p> -<h2 id="Lire_également">Lire également</h2> -<ul> - <li>{{ domxref("window.history") }}</li> - <li>{{ domxref("window.onpopstate") }}</li> -</ul> +> **Note :** [`const`](/en/JavaScript/Reference/Statements/const) (instruction de constante) **ne fait pas partie de ECMAScript 5**. Il est supporté dans Firefox et Chrome (V8) et partiellement supporté dans Opera 9+ et Safari. **Il n'est pas supporté dans Internet Explorer 6-9, ou dans la version de prévisualisation de Internet Explorer 10**. [`const`](/en/JavaScript/Reference/Statements/const) sera défini par ECMAScript 6, mais avec une sémantique différente. Proches des variables déclarées avec l'instruction [`let`](/en/JavaScript/Reference/Statements/let), les constantes déclarées avec [`const`](/en/JavaScript/Reference/Statements/const) seront limitées en portée. **Nous ne l'avons utilisé que pour des raisons pédagogiques, si vous souhaitez une compatibilité maximale de ce code, merci de remplacer les références à** **[`const`](/en/JavaScript/Reference/Statements/const) par des instructions [`var`](/en/JavaScript/Reference/Statements/var).** + +Pour plus d'informations, voyez : [Manipuler l'historique du navigateur](/fr/docs/DOM/manipuler_lhistorique_du_navigateur). + +## Lire également + +- {{ domxref("window.history") }} +- {{ domxref("window.onpopstate") }} diff --git a/files/fr/web/api/history_api/index.md b/files/fr/web/api/history_api/index.md index b7d1b6a1e5..40ec87c023 100644 --- a/files/fr/web/api/history_api/index.md +++ b/files/fr/web/api/history_api/index.md @@ -8,181 +8,159 @@ tags: translation_of: Web/API/History_API original_slug: Web/Guide/DOM/Manipuler_historique_du_navigateur --- -<p>L'objet DOM {{ domxref("window") }} fournit un accès à l'historique du navigateur via l'objet {{ domxref("window.history", "history") }}. Il expose un ensemble de méthodes et de propriétés qui permettent d'avancer et de reculer dans l'historique de l'utilisateur ainsi que -- à partir d'HTML5 -- manipuler le contenu de l'ensemble de l'historique.</p> +L'objet DOM {{ domxref("window") }} fournit un accès à l'historique du navigateur via l'objet {{ domxref("window.history", "history") }}. Il expose un ensemble de méthodes et de propriétés qui permettent d'avancer et de reculer dans l'historique de l'utilisateur ainsi que -- à partir d'HTML5 -- manipuler le contenu de l'ensemble de l'historique. -<h2 id="Se_déplacer_dans_l'historique">Se déplacer dans l'historique</h2> +## Se déplacer dans l'historique -<p>Avancer ou reculer dans l'historique de l'utilisateur est possible en utilisant les méthodes <code>back()</code>, <code>forward()</code> et <code>go()</code>.</p> +Avancer ou reculer dans l'historique de l'utilisateur est possible en utilisant les méthodes `back()`, `forward()` et `go()`. -<h3 id="Avancer_et_reculer">Avancer et reculer</h3> +### Avancer et reculer -<p>Pour reculer dans l'historique, il vous suffit de faire :</p> +Pour reculer dans l'historique, il vous suffit de faire : -<pre class="brush: js">window.history.back(); -</pre> +```js +window.history.back(); +``` -<p>Cela agira exactement comme si l'utilisateur cliquait sur le bouton Retour de la barre d'outils de son navigateur.</p> +Cela agira exactement comme si l'utilisateur cliquait sur le bouton Retour de la barre d'outils de son navigateur. -<p>De la même manière, il est possible d'avancer (comme si l'utilisateur cliquait sur le bouton Avancer) :</p> +De la même manière, il est possible d'avancer (comme si l'utilisateur cliquait sur le bouton Avancer) : -<pre class="brush: js">window.history.forward(); -</pre> +```js +window.history.forward(); +``` -<h3 id="Se_déplacer_à_un_élément_précis_de_l'historique">Se déplacer à un élément précis de l'historique</h3> +### Se déplacer à un élément précis de l'historique -<p>Vous pouvez utiliser la méthode <code>go()</code> pour charger une page spécifique de l'historique de la session, identifiée par sa position relative par rapport à la page en cours (la page courante étant, évidemment, d'index 0).</p> +Vous pouvez utiliser la méthode `go()` pour charger une page spécifique de l'historique de la session, identifiée par sa position relative par rapport à la page en cours (la page courante étant, évidemment, d'index 0). -<p>Pour reculer d'une page (l'équivalent d'un appel à <code>back()</code>):</p> +Pour reculer d'une page (l'équivalent d'un appel à `back()`): -<pre class="brush: js"><code>window.history.go(-1);</code> -</pre> +```js +window.history.go(-1); +``` -<p>Pour avancer d'une page, comme en appelant <code>forward()</code>:</p> +Pour avancer d'une page, comme en appelant `forward()`: -<pre class="brush: js"><code>window.history.go(1);</code> -</pre> +```js +window.history.go(1); +``` -<p>De la même manière, vous pouvez avancer de 2 pages en passant la valeur 2, et ainsi de suite.</p> +De la même manière, vous pouvez avancer de 2 pages en passant la valeur 2, et ainsi de suite. -<p>Vous pouvez déterminer le nombre de pages de l'historique en accédant à la valeur de la propriété length (<em>longeur</em>) :</p> +Vous pouvez déterminer le nombre de pages de l'historique en accédant à la valeur de la propriété length (_longeur_) : -<pre class="brush: js">var numberOfEntries = window.history.length; -</pre> +```js +var numberOfEntries = window.history.length; +``` -<div class="note"> - <p><strong>Note :</strong> Internet Explorer supporte le passage d'une URL sous forme de chaîne de caractères comme paramètre de la méthode <code>go()</code>; ce comportement est non standard et non supporté par Gecko.</p> -</div> +> **Note :** Internet Explorer supporte le passage d'une URL sous forme de chaîne de caractères comme paramètre de la méthode `go()`; ce comportement est non standard et non supporté par Gecko. -<h2 id="Ajouter_et_modifier_des_entrées_de_l'historique">Ajouter et modifier des entrées de l'historique</h2> +## Ajouter et modifier des entrées de l'historique -<p>{{ gecko_minversion_header("2") }}</p> +{{ gecko_minversion_header("2") }} -<p>HTML5 a introduit les méthodes <a href="/fr/docs/Web/Guide/DOM/Manipuler_historique_du_navigateur#La_méthode_pushState()">history.pushState()</a> et <a href="/fr/docs/Web/Guide/DOM/Manipuler_historique_du_navigateur#La_méthode_replaceState()">history.replaceState()</a>, qui permettent, respectivement, d'ajouter et de modifier des entrées de l'historique. Ces méthodes fonctionnent conjointement avec l'événement <a href="/fr/docs/Web/API/WindowEventHandlers/onpopstate">onpopstate</a>.</p> +HTML5 a introduit les méthodes [history.pushState()](</fr/docs/Web/Guide/DOM/Manipuler_historique_du_navigateur#La_méthode_pushState()>) et [history.replaceState()](</fr/docs/Web/Guide/DOM/Manipuler_historique_du_navigateur#La_méthode_replaceState()>), qui permettent, respectivement, d'ajouter et de modifier des entrées de l'historique. Ces méthodes fonctionnent conjointement avec l'événement [onpopstate](/fr/docs/Web/API/WindowEventHandlers/onpopstate). -<p>L'utilisation de <code>history.pushState()</code> change le référent créé habituellement dans l'en-tête HTTP pour les objets <a href="/en/DOM/XMLHttpRequest"><code>XMLHttpRequest</code></a>, chaque fois que son état a été changé. Le référent sera l'URL de la page dont l'objet window est <code>this</code> au moment de la création de l'objet <a href="/en/DOM/XMLHttpRequest"><code>XMLHttpRequest</code></a>.</p> +L'utilisation de `history.pushState()` change le référent créé habituellement dans l'en-tête HTTP pour les objets [`XMLHttpRequest`](/en/DOM/XMLHttpRequest), chaque fois que son état a été changé. Le référent sera l'URL de la page dont l'objet window est `this` au moment de la création de l'objet [`XMLHttpRequest`](/en/DOM/XMLHttpRequest). -<h3 id="Exemple_de_la_méthode_pushState()">Exemple de la méthode pushState()</h3> +### Exemple de la méthode pushState() -<p>Supposons que http://mozilla.org/foo.html exécute la séquence JavaScript suivante :</p> +Supposons que http\://mozilla.org/foo.html exécute la séquence JavaScript suivante : -<pre class="brush: js">var stateObj = { foo: "bar" }; +```js +var stateObj = { foo: "bar" }; history.pushState(stateObj, "page 2", "bar.html"); -</pre> +``` -<p>Cela va provoquer l'apparition dans la barre de navigation de http://mozilla.org/bar.html, mais ne provoquera pas le chargement effectif de <code>bar.html</code> ni même le test d'existence de <code>bar.html</code>.</p> +Cela va provoquer l'apparition dans la barre de navigation de http\://mozilla.org/bar.html, mais ne provoquera pas le chargement effectif de `bar.html` ni même le test d'existence de `bar.html`. -<p>Supposons à présent que l'utilisateur accède à la page http://google.com, puis clique sur l'icône "Recul". La barre de navigation va alors afficher http://mozilla.org/bar.html, et si vous lisez l'<code>history.state</code>, vous obtiendrez le <code>stateObj</code>. L'événement <code>popstate</code> ne sera pas lancé car la page a été rechargée. La page elle-même ressemblera à <code>bar.html</code>.</p> +Supposons à présent que l'utilisateur accède à la page http\://google.com, puis clique sur l'icône "Recul". La barre de navigation va alors afficher http\://mozilla.org/bar.html, et si vous lisez l'`history.state`, vous obtiendrez le `stateObj`. L'événement `popstate` ne sera pas lancé car la page a été rechargée. La page elle-même ressemblera à `bar.html`. -<p>Si on clique à nouveau sur Recul, l'URL de la barre de navigation va se changer en http://mozilla.org/foo.html et le document va recevoir un autre événement <code>popstate</code>, qui comportera, cette fois, un état null. Dans ce cas aussi, revenir en arrière ne modifie pas le contenu du document par rapport à ce qu'il était à l'étape précédente, cela bien qu'il ait pu être mis à jour manuellement sur réception de l'événement <code>popstate</code>.</p> +Si on clique à nouveau sur Recul, l'URL de la barre de navigation va se changer en http\://mozilla.org/foo.html et le document va recevoir un autre événement `popstate`, qui comportera, cette fois, un état null. Dans ce cas aussi, revenir en arrière ne modifie pas le contenu du document par rapport à ce qu'il était à l'étape précédente, cela bien qu'il ait pu être mis à jour manuellement sur réception de l'événement `popstate`. -<h3 id="La_méthode_pushState()">La méthode pushState()</h3> +### La méthode pushState() -<p><code>La méthode pushState()</code> utilise trois paramètres : un objet état, un titre (qui est pour l'instant ignoré) et, éventuellement, une URL. Examinons chacun de ces paramètres en détail :</p> +`La méthode pushState()` utilise trois paramètres : un objet état, un titre (qui est pour l'instant ignoré) et, éventuellement, une URL. Examinons chacun de ces paramètres en détail : -<ul> - <li> - <p><strong>state object</strong> (<em><strong>objet état</strong></em>) — L'objet état est un objet JavaScript qui est associé à une nouvelle entrée de l'historique par <code>pushState()</code>. Chaque fois qu'un utilisateur ouvre une nouvelle page, un événement <code>popstate</code> est émis et la propriété <code>state</code> de l'événement contient une copie de l'objet état de ce nouvel élément de l'historique.<br> - L'objet état peut être tout ce qui peut être sous forme de liste. Puisque Firefox sauvegarde les objets état sur le disque de l'utilisateur de façon à ce qu'ils puissent être rétablis après redémarrage du navigateur, le codage de l'objet état est limité à une taille de 640k octets. Si vous donnez à <code>pushState()</code> un objet état dont la représentation a une taille plus importante, la méthode génèrera une exception. Si vous avez un besoin d'espace plus important, il est conseillé d'utiliser <code>sessionStorage</code> et/ou <code>localStorage</code>.</p> - </li> - <li> - <p><strong>title</strong> (<strong><em>titre</em>)</strong> — Firefox, pour l'instant, ignore ce paramètre, bien qu'il puisse être utilisé plus tard. Afin de prévenir les changements futurs de cette méthode, il serait prudent de fournir ici, en paramètre, une chaîne vide. Vous pourriez aussi donner un titre court à l'état vers lequel vous vous dirigez.</p> - </li> - <li> - <p><strong>URL</strong> — L'URL de la nouvelle entrée de l'historique est donnée par ce paramètre. Il convient de préciser que le navigateur n'essaiera pas de charger la page pointée par cette URL après un appel à <code>pushState()</code>, mais il se peut qu'il tente de le faire plus tard, par exemple, lorsque l'utilisateur relancera son navigateur. Il n'est pas nécessaire que la nouvelle URL soit absolue ; si elle est relative, ce sera par rapport à l'URL courante. La nouvelle URL doit avoir la même origine (domaine) que l'URL courante ; dans le cas contraire, <code>pushState()</code> génèrera une exception. Ce paramètre est optionnel ; s'il n'est pas spécifié, sa valeur par défaut est l'URL de la page courante.</p> - </li> -</ul> +- **state object** (**_objet état_**) — L'objet état est un objet JavaScript qui est associé à une nouvelle entrée de l'historique par `pushState()`. Chaque fois qu'un utilisateur ouvre une nouvelle page, un événement `popstate` est émis et la propriété `state` de l'événement contient une copie de l'objet état de ce nouvel élément de l'historique. + L'objet état peut être tout ce qui peut être sous forme de liste. Puisque Firefox sauvegarde les objets état sur le disque de l'utilisateur de façon à ce qu'ils puissent être rétablis après redémarrage du navigateur, le codage de l'objet état est limité à une taille de 640k octets. Si vous donnez à `pushState()` un objet état dont la représentation a une taille plus importante, la méthode génèrera une exception. Si vous avez un besoin d'espace plus important, il est conseillé d'utiliser `sessionStorage` et/ou `localStorage`. +- **title** (**_titre_)** — Firefox, pour l'instant, ignore ce paramètre, bien qu'il puisse être utilisé plus tard. Afin de prévenir les changements futurs de cette méthode, il serait prudent de fournir ici, en paramètre, une chaîne vide. Vous pourriez aussi donner un titre court à l'état vers lequel vous vous dirigez. +- **URL** — L'URL de la nouvelle entrée de l'historique est donnée par ce paramètre. Il convient de préciser que le navigateur n'essaiera pas de charger la page pointée par cette URL après un appel à `pushState()`, mais il se peut qu'il tente de le faire plus tard, par exemple, lorsque l'utilisateur relancera son navigateur. Il n'est pas nécessaire que la nouvelle URL soit absolue ; si elle est relative, ce sera par rapport à l'URL courante. La nouvelle URL doit avoir la même origine (domaine) que l'URL courante ; dans le cas contraire, `pushState()` génèrera une exception. Ce paramètre est optionnel ; s'il n'est pas spécifié, sa valeur par défaut est l'URL de la page courante. -<div class="note"> - <p><strong>Note :</strong> Dans Gecko 2.0 {{ geckoRelease("2.0") }} jusqu'à Gecko 5.0 {{ geckoRelease("5.0") }}, l'objet fourni est sérialisé en utilisant JSON. À partir de Gecko 6.0 {{ geckoRelease("6.0") }}, l'objet est sérialisé à l'aide de<a href="/en/DOM/The_structured_clone_algorithm"> "structured clone algorithm"</a> qui autorise, en particulier, la sérialisation d'arbres récursifs cycliques. Cela permet de passer de façon sûre une plus grande diversité d'objets.</p> -</div> +> **Note :** Dans Gecko 2.0 {{ geckoRelease("2.0") }} jusqu'à Gecko 5.0 {{ geckoRelease("5.0") }}, l'objet fourni est sérialisé en utilisant JSON. À partir de Gecko 6.0 {{ geckoRelease("6.0") }}, l'objet est sérialisé à l'aide de[ "structured clone algorithm"](/en/DOM/The_structured_clone_algorithm) qui autorise, en particulier, la sérialisation d'arbres récursifs cycliques. Cela permet de passer de façon sûre une plus grande diversité d'objets. -<p>On peut assimiler l'appel à <code>pushState()</code> à l'affectation <code>window.location = "#foo"</code>, en cela que l'un comme l'autre auront pour effet de créer et déclencher une autre entrée de l'historique associée au document courant. Mais <code>pushState()</code> a quelques avantages :</p> +On peut assimiler l'appel à `pushState()` à l'affectation `window.location = "#foo"`, en cela que l'un comme l'autre auront pour effet de créer et déclencher une autre entrée de l'historique associée au document courant. Mais `pushState()` a quelques avantages : -<ul> - <li>La nouvelle URL peut être quelconque pourvu qu'elle ait la même origine que l'URL courante. En revanche, affecter <code>window.location</code> vous maintient au même {{ domxref("document") }} seulement si vous modifiez uniquement le hash.</li> - <li>Vous n'êtes pas contraint de modifier l'URL si vous ne le voulez pas. Par contre, affecter <code>window.location = "#foo";</code> crée une nouvelle entrée de l'historique seulement si le hash courant n'est pas <code>#foo</code>.</li> - <li>Vous pouvez associer des données quelconques avec votre nouvelle entrée de l'historique. Avec l'approche basée sur le hash, il est nécessaire de coder toute donnée pertinente en une chaîne courte.</li> -</ul> +- La nouvelle URL peut être quelconque pourvu qu'elle ait la même origine que l'URL courante. En revanche, affecter `window.location` vous maintient au même {{ domxref("document") }} seulement si vous modifiez uniquement le hash. +- Vous n'êtes pas contraint de modifier l'URL si vous ne le voulez pas. Par contre, affecter `window.location = "#foo";` crée une nouvelle entrée de l'historique seulement si le hash courant n'est pas `#foo`. +- Vous pouvez associer des données quelconques avec votre nouvelle entrée de l'historique. Avec l'approche basée sur le hash, il est nécessaire de coder toute donnée pertinente en une chaîne courte. -<p>Notez que <code>pushState()</code> n'entraîne jamais le déclenchement d'un événement <code>hashchange</code>, même si la nouvelle URL diffère de l'ancienne seulement par son hash.</p> +Notez que `pushState()` n'entraîne jamais le déclenchement d'un événement `hashchange`, même si la nouvelle URL diffère de l'ancienne seulement par son hash. -<p>Dans un document <a href="/fr/docs/Mozilla/Tech/XUL">XUL</a> elle crée l'élément XUL spécifié.</p> +Dans un document [XUL](/fr/docs/Mozilla/Tech/XUL) elle crée l'élément XUL spécifié. -<p>Dans d'autres documents, elle crée un élément avec l'URI d'espace de nom <code>null</code>. </p> +Dans d'autres documents, elle crée un élément avec l'URI d'espace de nom `null`. -<h3 id="La_méthode_replaceState()">La méthode replaceState()</h3> +### La méthode replaceState() -<p><code>history.replaceState()</code> fonctionne exactement comme <code>history.pushState()</code> hormis le fait que <code>replaceState()</code> modifie l'entrée courante de l'historique au lieu d'en créer une nouvelle. À noter que ceci n'empêche pas la création d'une nouvelle entrée dans l'historique global du navigateur.</p> +`history.replaceState()` fonctionne exactement comme `history.pushState()` hormis le fait que `replaceState()` modifie l'entrée courante de l'historique au lieu d'en créer une nouvelle. À noter que ceci n'empêche pas la création d'une nouvelle entrée dans l'historique global du navigateur. -<p><code>replaceState()</code> est particulièrement utile si vous désirez mettre à jour l'objet état ou l'URL de l'entrée courante de l'historique en réponse à une action de l'utilisateur.</p> +`replaceState()` est particulièrement utile si vous désirez mettre à jour l'objet état ou l'URL de l'entrée courante de l'historique en réponse à une action de l'utilisateur. -<div class="note"> - <p><strong>Note :</strong> Dans Gecko 2.0 {{ geckoRelease("2.0") }} jusqu'à Gecko 5.0 {{ geckoRelease("5.0") }}, l'objet transmis est sérialisé avec JSON. À partir de Gecko 6.0 {{ geckoRelease("6.0") }}, l'objet est sérialisé à l'aide de<a href="/en/DOM/The_structured_clone_algorithm"> "structured clone algorithm"</a> qui autorise, en particulier, la sérialisation d'arbres récursifs cycliques. Cela permet de passer de façon sûre une plus grande diversité d'objets.</p> -</div> +> **Note :** Dans Gecko 2.0 {{ geckoRelease("2.0") }} jusqu'à Gecko 5.0 {{ geckoRelease("5.0") }}, l'objet transmis est sérialisé avec JSON. À partir de Gecko 6.0 {{ geckoRelease("6.0") }}, l'objet est sérialisé à l'aide de[ "structured clone algorithm"](/en/DOM/The_structured_clone_algorithm) qui autorise, en particulier, la sérialisation d'arbres récursifs cycliques. Cela permet de passer de façon sûre une plus grande diversité d'objets. -<h3 id="Exemple_de_la_méthode_replaceState()">Exemple de la méthode replaceState()</h3> +### Exemple de la méthode replaceState() -<p>Supposons que <code>http://mozilla.org/foo.html</code> exécute le code JavaScript suivant :</p> +Supposons que `http://mozilla.org/foo.html` exécute le code JavaScript suivant : -<pre class="brush: js">var stateObj = { foo: "bar" }; -history.pushState(stateObj, "page 2", "bar.html");</pre> +```js +var stateObj = { foo: "bar" }; +history.pushState(stateObj, "page 2", "bar.html"); +``` -<p>L'explication des deux lignes ci-dessus peut être trouvée dans la section "<a href="#">Exemple de la méthode pushState()</a>". Supposons ensuite que http://mozilla.org/bar.html exécute le code JavaScript suivant :</p> +L'explication des deux lignes ci-dessus peut être trouvée dans la section "[Exemple de la méthode pushState()](#)". Supposons ensuite que http\://mozilla.org/bar.html exécute le code JavaScript suivant : -<pre class="brush: js">history.replaceState(stateObj, "page 3", "bar2.html");</pre> +```js +history.replaceState(stateObj, "page 3", "bar2.html"); +``` -<p>Cela entraînera l'affichage de la barre d'URL http://mozilla.org/bar2.html, mais le navigateur ne chargera pas <code>bar2.html</code> ou même vérifiera que <code>bar2.html</code> existe.</p> +Cela entraînera l'affichage de la barre d'URL http\://mozilla.org/bar2.html, mais le navigateur ne chargera pas `bar2.html` ou même vérifiera que `bar2.html` existe. -<p>Supposons maintenant que l'utilisateur accède à http://www.microsoft.com, puis clique sur le bouton Précédent. À ce stade, la barre d'URL affichera http://mozilla.org/bar2.html. Si l'utilisateur clique à nouveau sur Retour, la barre d'URL affichera http://mozilla.org/foo.html et contournera totalement bar.html.</p> +Supposons maintenant que l'utilisateur accède à http\://www\.microsoft.com, puis clique sur le bouton Précédent. À ce stade, la barre d'URL affichera http\://mozilla.org/bar2.html. Si l'utilisateur clique à nouveau sur Retour, la barre d'URL affichera http\://mozilla.org/foo.html et contournera totalement bar.html. -<h3 id="L'événement_popstate">L'événement popstate</h3> +### L'événement popstate -<p>Un événement <code>popstate</code> est envoyé à la fenêtre chaque fois que l'entrée active de l'historique change. Si l'entrée de l'historique activée a été créée par un appel à <code>replaceState</code>, la propriété <code>state </code>de l'événement <code>popstate</code> contient une copie de l'objet état de l'entrée de l'historique.</p> +Un événement `popstate` est envoyé à la fenêtre chaque fois que l'entrée active de l'historique change. Si l'entrée de l'historique activée a été créée par un appel à `replaceState`, la propriété `state `de l'événement `popstate` contient une copie de l'objet état de l'entrée de l'historique. -<p>Voir {{ domxref("window.onpopstate") }} pour un exemple d'utilisation.</p> +Voir {{ domxref("window.onpopstate") }} pour un exemple d'utilisation. -<h3 id="Lire_l'état_courant">Lire l'état courant</h3> +### Lire l'état courant -<p>Quand votre page est chargée, il se pourrait qu'elle ait un objet état non nul. Cela peut se produire, par exemple, si la page fixe un objet état (avec <code>pushState()</code> ou <code>replaceState()</code>) et qu'ensuite l'utilisateur redémarre le navigateur. Quand votre page sera rechargée, elle recevra l'événement onload , mais pas l'événement popstate. Néanmoins, si vous lisez la propriété history.state, vous récupèrerez l'objet état que vous auriez obtenu si un événement popstate avait été déclenché.</p> +Quand votre page est chargée, il se pourrait qu'elle ait un objet état non nul. Cela peut se produire, par exemple, si la page fixe un objet état (avec `pushState()` ou `replaceState()`) et qu'ensuite l'utilisateur redémarre le navigateur. Quand votre page sera rechargée, elle recevra l'événement onload , mais pas l'événement popstate. Néanmoins, si vous lisez la propriété history.state, vous récupèrerez l'objet état que vous auriez obtenu si un événement popstate avait été déclenché. -<p>Vous pouvez lire l'état de l'entrée courante de l'historique sans devoir attendre un événement <code>popstate</code> en utilisant la propriété <code>history.state</code> comme ceci :</p> +Vous pouvez lire l'état de l'entrée courante de l'historique sans devoir attendre un événement `popstate` en utilisant la propriété `history.state` comme ceci : -<pre class="brush: js">var currentState = history.state; -</pre> +```js +var currentState = history.state; +``` -<h2 id="Exemples">Exemples</h2> +## Exemples -<p>Pour un exemple comple de site web AJAX, vous pouvez voir : <a href="/fr/docs/Web/Guide/DOM/Manipuler_historique_du_navigateur/Example">Exemple de navigation en Ajax</a>.</p> +Pour un exemple comple de site web AJAX, vous pouvez voir : [Exemple de navigation en Ajax](/fr/docs/Web/Guide/DOM/Manipuler_historique_du_navigateur/Example). -<h2 id="Spécifications">Spécifications</h2> +## Spécifications -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Spécification</th> - <th scope="col">Statut</th> - <th scope="col">Commentaire</th> - </tr> - <tr> - <td>{{SpecName('HTML WHATWG', "browsers.html#history", "History")}}</td> - <td>{{Spec2('HTML WHATWG')}}</td> - <td>Pas de changement de {{SpecName("HTML5 W3C")}}.</td> - </tr> - <tr> - <td>{{SpecName('HTML5 W3C', "browsers.html#history", "History")}}</td> - <td>{{Spec2('HTML5 W3C')}}</td> - <td>Définition initiale.</td> - </tr> - </tbody> -</table> +| Spécification | Statut | Commentaire | +| ------------------------------------------------------------------------------------ | -------------------------------- | ------------------------------------------------------ | +| {{SpecName('HTML WHATWG', "browsers.html#history", "History")}} | {{Spec2('HTML WHATWG')}} | Pas de changement de {{SpecName("HTML5 W3C")}}. | +| {{SpecName('HTML5 W3C', "browsers.html#history", "History")}} | {{Spec2('HTML5 W3C')}} | Définition initiale. | -<h2 id="Browser_compatibility">Compatibilité des navigateurs</h2> +## Compatibilité des navigateurs -<p>{{Compat("api.History")}}</p> +{{Compat("api.History")}} -<h2 id="See_also">Voir aussi</h2> +## Voir aussi -<ul> - <li>{{ domxref("window.history") }}</li> - <li>{{ domxref("window.onpopstate") }}</li> -</ul> +- {{ domxref("window.history") }} +- {{ domxref("window.onpopstate") }} |