Pages

mercredi 28 décembre 2011

Charger des pages avec ajax sans gêner les utilisateurs n'ayant pas javascript

Le but d'un site chargeant ces pages avec ajax est de diminuer la charge du serveur en ne demandant que le contenu principal (pas de menu, footer et autres contenus inchangés). Ceci pour une navigation plus rapide.
Le problème apparaît quelquefois au niveau de l'historique et si ce n'est pas pensé, impossible d'accéder à une page via son url. Quant à ceux n'ayant pas java-script ‑moteur de recherche compris‑ il est totalement impossible de visiter le site.

Le premier problème peut se corriger avec history.pushState ou la lib history.js qui permet de normaliser d'un navigateur à l'autre et utilise des ancres pour les vieux navigateurs (ceux ne supportant pas HTML5).

Le second problème est tout simple, il suffit d'indiquer une page complète et ajouter un paramètre dans l'url pour les utilisateurs ayant java-script. Si ce paramètre existe la page ne renvoie que le contenu principal, il ne reste plus qu'à remplacer l'ancien par le nouveau.

Par exemple avec un lien sur ma_page.php qui retourne une page complète.
On intercepte l'événement click. On ajoute un paramètre, par exemple 'ajax', ce qui donne ma_page.php?ajax puis on charge cette page. Le serveur ne renvoie que le contenu, on ajoute ma_page.php dans l'historique et on remplace l'ancien contenu par le nouveau.
De plus, il serait de bon ton d'indiquer le chargement quelque part, c'est perturbant de ne rien voir :).

Aucun commentaire: