9
votes

Ajouter un hash avec JavaScript à URL sans page de défilement?

Ajouter un HASH à URL sans page de défilement? avec JavaScript

  1. i Page Open
  2. i Faites défiler vers le bas
  3. I Cliquez sur le lien qui ajoute un hachage (peut-être avec une valeur #TEST) (exemple: http: // www .Example.com / # Test )
  4. La page ne doit pas faire défiler vers le haut.

    Comment cela peut-il être fait?

    note: Vérification juste s'il est possible de désactiver le mouvement même s'il y a une balise avec id = "test" Jusqu'à présent, le retour faux; Fonctionne bien (pour soutenir les personnes sans JavaScript) et éviter la présence de l'ID dans le HTML, mais ce n'est pas un problème de choses comme des chiffres, tels que 1, 2, 3 (ils ne sont pas autorisés comme des identifiants de toute façon) < / p>

    Toutes les réponses sont excellentes, rien de nouveau ou révolutionnaire, et pas de solutions sur la façon de casser la fonctionnalité par défaut, mais cela fera. :) Merci d'avoir pris le temps de répondre.


6 commentaires

"#" a un vrai sens sémantique qui est "la section #identifiée de la ressource de cette URI". Pourquoi essayez-vous de casser cette attente standard?


Histoire et le bouton arrière. Personnellement, je préfère le faire la façon de normes classiques, mais beaucoup de gens veulent que Fancy Ajax. Après (ou Âgé), j'ai posté cette question Google and Deviant Art a mis en place cette méthode "cassée" que vous pouvez voir lorsque vous recherchez quelque chose :)


À l'heure actuelle, la nouvelle meilleure façon de faire cette page de chargement de page d'ajax fantaisie est d'utiliser .Push


Dupliqué possible de Stackoverflow.com/ Questions / 1489624 / ... .


@erdomke Cette question est une duplicata? Le mien a été demandé au 17 septembre 2009, a été posé son positionnement le 28 septembre 2009. Son est le double. :)


@Timohuovinen bon appel. Mon mauvais pour ne pas vérifier les dates. Mon objectif ultime était juste de référencer les deux questions.


4 Réponses :


17
votes

Tout hachage qui n'est pas présent sur la page devrait vous donner ce comportement. Par exemple, Ce lien pointe vers un non- Hash existant sur cette page. (Lien testé avec Chrome 2.0 et IE 6 (les seuls navigateurs que j'ai à la disposition du moment).)

Donc, si votre URL vous cause d'aller en haut de la page, assurez-vous de ne rien avoir sur la page dont l'identifiant ou le nom est cette adresse.


1 commentaires

Après tant de fois, je me suis rendu compte que votre absolument juste.



0
votes

Chaque navigateur interprétera la valeur de hachage comme "Aller à cet ID DOM". Vous pouvez essayer deux choses que je peux penser:

  1. Faites l'action qui ajoute le hachage à renvoyer false, désactivant ainsi le besoin du navigateur de la regarder

  2. Ajouter une étiquette DOM avec l'ID du hachage Vous ajoutez à droite où le clic est, pour arrêter le navigateur pour vous déplacer. Mais ce n'est probablement pas ce que vous voulez, puisque vous ajoutez le hash pour quelque chose.


0 commentaires

3
votes

L'un des exemples ci-dessous devrait faire ce que vous voulez: xxx

s'il y a un élément avec id = "test1" ou id = " test2 " ou ou sur votre page, Il saura faire défiler jusqu'à cet élément, sinon il devrait fonctionner comme vous l'avez demandé.

Si vous n'avez pas de code qui ne fonctionne pas comme prévu, veuillez Modifiez votre question et incluez un petit exemple de HTML et JavaScript qui ne fonctionne pas comme prévu.


0 commentaires

0
votes

La réponse de Welbog fonctionne bien, mais laisse le #nonexistantanchor code> HASH dans la barre d'adresse du navigateur.

Pour ce faire avec JQuery, vous pouvez ajouter une classe à l'ancre et utiliser le Empêchez la méthode par défaut pour désactiver à la fois la navigation et la modification de l'URL. P>

<a href='#' class="nodefault">Clickable</a>

<script>
$("a.nodefault").click(function(event) {
  event.preventDefault();
});
</script>


0 commentaires