Wallogit.com
2017 © Pedro PelĂĄez
Chargement asynchrone du contenu et gestion des urls, historique, ...
Permet un chargement asynchrone du contenu, avec gestion de l'url de la page. Ainsi que de l'historique de navigation. Les liens _blank, _top, # et sans href sont ignorés. (Supporte aussi bien les liens absolu que relatifs), (*1)
Le premier est tout simplement que l'internaute ai moins de données à télécharger à chaque changement de page, ce qui de fait accélÚre le chargement., (*2)
Et ensuite on gagne aussi en rapidité car le navigateur n'a pas besoin de réinterpréter et de ré-initialiser tout votre javascript et css., (*3)
Comment le mettre en place ? C'est trĂšs simple, vous n'avez pas besoin de toucher Ă vos liens. Des listeners seront ajoutĂ©s automatiquement sur les liens. Cela permet que vos liens soient toujours utilisables, mĂȘme sans Javascript ! (Auquel cas une requĂȘte "classique" est effectuĂ©e au lieu d'une ajax), (*4)
** Important ** (Sinon cela produira un erreur js et la page chargera normalement : pas en ajax) Définir le container principal (qui contiendra le contenu à changer) :, (*5)
APL.setContainer(document.getElementById('mainContent'));
Définir un callback qui sera exécuté aprÚs chaque chargement de page qui à réussi., (*6)
APL.setCallback(function(url, params) {
//todo what you want
});
Définir un callback qui sera exécuté aprÚs un chargement de page qui à échoué., (*7)
APL.setFailCallback(function(url, data) {
//todo what you want
});
DĂ©finir la barre du chargement /loader ajax (qui sera affichĂ© / cachĂ© lors des requĂȘtes ajax) :, (*8)
APL.setLoader(document.getElementById('loaderBar'));
DĂ©finir si une rĂ©ponse doit ĂȘtre considĂ©rĂ© comme un succĂšs :, (*9)
APL.isSuccessCallback = function(request, data) {
return request.status < 400 || typeof data !== 'undefined' && typeof data.view !== 'undefined';
};
L'appel ajax s'effectue sur l'url définie dans le href avec le paramÚtre json=1
Et s'attend Ă recevoir la structure json minimale suivante :, (*10)
{
"view": "<div><h1>My title</h1>My html content</div>"
}
Optionnel : Vous pouvez aussi passer des paramÚtres supplémentaires avec l'attribut "params", qui seront passés au callback (voir précédemment), (*11)
{
"view": "<div><h1>My title</h1>My html content</div>",
"params": {"title": "My title page", "myparmeterOne": 42, "other":[]}
}