Voici deux approches générales pour la gestion de l'histoire. Les deux travailleront avec l'idée de la «page blanche», même si vous devrez peut-être modifier le code. Les deux façons de procéder utilisent l'identificateur de fragment ou l'API de nouvelle histoire.
En utilisant l'identifiant de fragment ressemblerait à quelque chose comme ceci:
<body onhashchange="hashChanged()" onload="hashChanged()">
<input id='query'></input><button onclick="location.hash = '#'+document.getElementById('query').value">Query</button>
<script type="text/javascript">
function query(str) {
// do your ajaxy thing
}
function hashChanged() {
var str = location.hash.substring(1);
document.getElementById('query').value = str;
query(str);
}
</script>
</body>
Cette technique fonctionne sur IE8, Firefox 3.6 et Chrome 5. Vous pouvez pirater des choses similaires dans les navigateurs précédents en ayant des zones de défilement cachées et la détection de rouleaux, ou en interrogeant régulièrement la partie de hachage de l'emplacement.
Une autre méthode utilise la nouvelle API d'histoire
<body onload="queryChanged();">
<input id='query'></input><button onclick="history.pushState(str, "", "?query="+str);query(document.getElementById('query').value)">Query</button>
<script type="text/javascript">
function query(str) {
// do your ajaxy thing
}
function queryChanged() {
var str = "";
var re = /[\?|&]query=([^&]*)/
if (re.test(location.search)) {
str = re.exec(location.search)[1];
}
document.getElementById('query').value = str;
query(str);
}
window.onpopstate = queryChanged;
</script>
</body>
Cela fonctionne récent Firefox et Chrome, mais seulement IE10.
Bien sûr, vous feriez mieux d'utiliser une bibliothèque. Un ancien est Really Simple History, mais il existe des plugins plus modernes pour jquery qui fournissent des fonctionnalités similaires, par exemple. BBQ ou le hashchange plugin.
À l'étape 4, le contenu de la page doit-il également être non filtré? Dans ce cas, il ne serait pas plus facile de laisser tomber la partie ajax. En utilisant un HTTP régulier avec un filtre, vous obtiendrez automatiquement le bon comportement. – harald
Vous pouvez jouer avec la partie # de l'URL. –
kapa
Référez-vous à http://plugins.jquery.com/plugin-tags/bookmark – Vicky