Faites défiler par programme jusqu’à une étiquette d’ancrage

Considérez le code suivant:

GoTo Label2 ... [content here] ... More content More content More content More content More content 

Existe-t-il un moyen d’émuler en cliquant sur le lien “GoTo Label2” pour accéder à la région appropriée de la page via le code?

EDIT : une alternative acceptable serait de faire défiler un élément avec un identifiant unique, qui existe déjà sur ma page. J’appendais les balises d’ancrage s’il s’agit d’une solution viable.

Ce JS a généralement bien fonctionné pour moi si vous mettez également un identifiant sur l’élément:

 document.getElementById('MyID').scrollIntoView(true); 

C’est bien car cela positionnera également les divs défilables etc. pour que le contenu soit visible.

Mike.

En utilisant javascript:

 window.location.href = '#label2'; 

Si vous devez le faire depuis le serveur / code, vous pouvez simplement émettre ce Javascript et l’enregistrer en tant que script de démarrage pour cette page.

Passer à une ancre côté serveur, par exemple, c #.

 ClientScript.RegisterStartupScript(this.GetType(), "hash", "location.hash = '#form';", true); 

Je suppose que cela fonctionnera:

 window.location="#label2"; 

no “#” lorsque vous utilisez window.location.hash

La solution

 document.getElementById('MyID').scrollIntoView(true); 

fonctionne bien dans presque tous les navigateurs, alors que j’ai remarqué que dans certains navigateurs ou dans certaines versions mobiles (comme certaines versions Blackberry) la fonction “scrollIntoView” n’est pas reconnue, donc je considérerais cette solution (un peu plus moche que la précédente) :

 window.location.href = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search + "#MyAnchor"; 

Si l’élément est une balise d’ancrage, vous devriez pouvoir:

 document.getElementsByName('label2')[0].focus(); 

vous pouvez simplement ouvrir la nouvelle URL avec le nom ajouté, par exemple http://www.mysite.com/mypage.htm#label2

En Javascript,

location.href = location.href + ‘# label2’;