Le problème que je rencontre dans Chrome et Edge:
Dans Firefox, la table est toujours triée selon la colonne correcte et se trouve toujours sur la page correcte. Comment puis-je faire en sorte que Chrome et Edge se comportent également de cette manière?
Je sais que DataTables a son option stateSave
( documentation et exemple ), mais le problème est que l’utilisateur navigue sur le site, puis clique sur un lien pour aller à la page contenant la table DataTables. cela les remettra dans le même état dans ce scénario aussi. Je souhaite que l'utilisateur soit remis dans le même état s'il utilise le bouton retour de son navigateur.
Sur la base de ce post , vous pouvez effacer l'état enregistré en cliquant sur le lien menant à la page contenant le tableau.
voir exemple ici
$(document).ready(function() {
$('#example').DataTable( {
"paging": true,
"ordering": true,
"info": false,
stateSave: true
} );
} );
$(".table_link").on("click", function(){
$('#example').DataTable().state.clear();
});
Ok, tu as une idée folle qui pourrait marcher pour ça. Si vous utilisez "stateSaveCallback" pour définir un hachage d'URL, cela ajoutera un élément à l'historique du navigateur. Ensuite, vous pouvez vérifier la valeur de hachage lors du chargement de la page. Si le hachage n'est pas présent, vous effacez le cache d'état sur le DataTable.
Cela se produit dans les scénarios suivants:
Scénario 1: L'utilisateur appuie sur le bouton Précédent après la sauvegarde de l'état sur la page du tableau de données:
Scénario 2: Les utilisateurs copient l'URL après la sauvegarde de l'état.
Toutefois, dans tous les autres scénarios fournis, tant que vous n'incluez pas le code de hachage dans vos liens de navigation, cela permettrait de détecter de manière fiable si un utilisateur utilisait le bouton Précédent pour accéder à la grille puisqu'il s'agirait d'un élément d'historique.