Bonjour.
Je charge des pages dans un container (<section>) avec un loader ajax.
ça fonctionne très bien mais je n'arrive pas à atteindre l'ancre qui va avec l'url
genre: page.html#_idTextAnchor008
Je sèche salement.
ne fonctionne pas.
Je n'ai pas d'erreur dans la console, donc j'en déduis que tout existe...
J'ai une valeur pour le offsetTop (qui change en fonction de mon ancre) mais je ne suis pas sûr d'utiliser la bonne méthode pour scroller jusqu'à cette ancre. ni scroller le bon container...
Mes ancres sont des id...
Je n'utilise pas jQuery !!!
Une idée?
merci
je vous laisse le code pour la bonne bouche
Modifié par mrbbp (17 Jan 2019 - 01:42)
Je charge des pages dans un container (<section>) avec un loader ajax.
ça fonctionne très bien mais je n'arrive pas à atteindre l'ancre qui va avec l'url
genre: page.html#_idTextAnchor008
Je sèche salement.
monContainer.scrollTop = document.querySelector(ancre).offsetTop;
ne fonctionne pas.
Je n'ai pas d'erreur dans la console, donc j'en déduis que tout existe...
J'ai une valeur pour le offsetTop (qui change en fonction de mon ancre) mais je ne suis pas sûr d'utiliser la bonne méthode pour scroller jusqu'à cette ancre. ni scroller le bon container...
Mes ancres sont des id...
Je n'utilise pas jQuery !!!
Une idée?
merci
je vous laisse le code pour la bonne bouche
<div class="main">
<div id="swipeme-main" class="panel panel-main" ><section id="main-content"></section></div>
<div class="panel panel-left" ><section id="left-content" ></section></div>
<div class="panel panel-right"><section id="right-content"></section></div>
</div>
let menuOuvert, pageEncours, urlEncours;
function chargeChapitre(_url) {
const ancre = '#'+_url.split('#')[1];
const con = document.querySelector('#main-content');
if (pageEncours != _url.split("#")[0]) {
// cache le container
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function (e) {
if (xhr.readyState == 4 && xhr.status == 200) {
con.innerHTML = xhr.responseText;
pageEncours = _url.split("#")[0]
}
}
xhr.onload = function (e) {
console.log(e.status);
if (xhr.readyState == 4 && xhr.status == 200) {
console.log("chargé");
// va à l'ancre
console.log('offsetTop',document.querySelector(ancre).offsetTop);
con.scrollTop = document.querySelector(ancre).offsetTop;
}
if (xhr.status == 404) {
console.log ("le fichier n'est pas trouvable");
}
}
xhr.open("GET", _url, true);
xhr.setRequestHeader('Content-type', 'text/html');
xhr.send();
urlEncours = _url;
} else {
console.log("meme page");
if (urlEncours != _url) {
console.log('offsetTop',document.querySelector(ancre).offsetTop);
con.scrollTop = document.querySelector(ancre).offsetTop;
} else {
//même url + meme ancre
}
}
}
Modifié par mrbbp (17 Jan 2019 - 01:42)