J'essaie the history api pour changer l'URL après avoir échangé le contenu et ai rencontré un problème avec l'arrêt des balises a de charger une nouvelle page. Jusqu'à présent, lorsque vous cliquez sur un bouton, il charge le contenu demandé dans la page, puis charge la page sur laquelle le contenu demandé est stocké. Des suggestions sur la façon d'arrêter cela et obtenir un résultat d'une page Web avec un nouveau contenu et une nouvelle URL qui peut être partagée?Comment arrêter une balise <a> de charger une nouvelle page avec l'historique html5 api
Voici le JS.
function supports_history_api() {
return !!(window.history && history.pushState);
}
function swapText(href) {
var req = new XMLHttpRequest();
req.open("GET",
"http://bonkmas.com/historytest/gallery/" +
href.split("/").pop(),
false);
req.send(null);
if (req.status == 200) {
document.getElementById("open-content").innerHTML = req.responseText;
setupHistoryClicks();
return true;
}
return false;
}
function addClicker(link) {
link.addEventListener("click", function(e) {
if (swapText(link.href)) {
history.pushState(null, null, link.href);
e.preventDefault();
}
}, true);
}
function setupHistoryClicks() {
addClicker(document.getElementById("next-vid"));
addClicker(document.getElementById("previous-vid"));
}
window.onload = function() {
if (!supports_history_api()) { return; }
setupHistoryClicks();
window.setTimeout(function() {
window.addEventListener("popstate", function(e) {
swapText(location.pathname);
}, false);
}, 1);
}
http://bonkmas.com/historytest/
ne sais pas si je suis. Où est exactement le code qui va mal? – Emanegux
Pourquoi n'utilisez-vous pas d'outils de développement tels que firebug ou outils de développement chrome?! L'erreur est alors évidente. Dans votre fonction addClicker, vous devez utiliser "this" au lieu de "link" dans le callback eventListener. –
Je dev outils de développement de chrome. Comment cela m'aide-t-il à comprendre ce qui se passe dans ce cas particulier? – Emanegux