Tengo una pregunta que se encontrará con mucha frecuencia. El problema es que en ninguna parte se puede encontrar una solución explícita.
Tengo dos problemas con respecto a las anclas.
El objetivo principal debe ser obtener una URL limpia y agradable sin ningún hash en ella mientras se utilizan anclas para saltar en una página.
Entonces la estructura de los anclajes es:
<ul>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li>
</ul>
<div class="wrap">
<a name="one">text 1</a>
<a name="two">text 2</a>
<a name="three" class="box">text 3</a>
</div>
De acuerdo, si hace clic en uno de los enlaces, la URL cambiará automáticamente a
www.dominio.com/página#1
Al final esto debería ser solo:
www.dominio.com/página
Hasta aquí todo bien. Ahora, la segunda cosa es que cuando busques en Internet ese problema, encontrarás javascript
una solución.
He encontrado esta función:
function jumpto(anchor){
window.location.href = "#"+anchor;
}
y llamando a esa función con:
<a onclick="jumpto('one');">One</a>
como será igual antes Agregará el hash a la url. También agregué
<a onclick="jumpto('one'); return false;">
sin éxito. Entonces, si hay alguien que pueda decirme cómo resolver esto, realmente lo agradecería.
Muchas gracias.
window.location.hash=''
.window.scrollTo
o el jQuery helper correspondiente: stackoverflow.com/questions/6677035/jquery-scroll-to-element o stackoverflow.com/questions/500336/…location.hash=''
, los#
restos permanecen allí.Respuestas:
Puede obtener la coordenada del elemento de destino y establecer la posición de desplazamiento. Pero esto es muy complicado.
Aquí hay una manera más perezosa de hacer eso:
Esto se utiliza
replaceState
para manipular la url. Si también desea soporte para IE , deberá hacerlo de la manera complicada :Demostración: http://jsfiddle.net/DerekL/rEpPA/
Otro con transición: http://jsfiddle.net/DerekL/x3edvp4t/
También puedes usar
.scrollIntoView
:(Bueno, mentí. No es complicado en absoluto).
fuente
/show
al final de la url.$(mySelector)[0].scrollIntoView()
.scrollIntoView
. 1- por mencionarlo al final.Creo que es una solución mucho más simple:
Este método no recarga el sitio web y establece el foco en los anclajes necesarios para el lector de pantalla.
fuente
window.location = window.location.origin + window.location.pathname + '#hash';
No hay suficiente representante para un comentario.
El método basado en getElementById () en la respuesta seleccionada no funcionará si el ancla se ha establecido
name
pero no se haid
establecido (lo cual no se recomienda, pero sucede en la naturaleza).Algo a tener en cuenta si no tiene el control del marcado del documento (por ejemplo, webextension).
El
location
método basado en la respuesta seleccionada también se puede simplificar conlocation.replace
:fuente
Porque cuando lo haces
Cargas una nueva página, puedes hacer:
fuente
Tengo un botón para un mensaje que al hacer clic se abre el diálogo de visualización y luego puedo escribir lo que quiero buscar y se dirige a esa ubicación en la página. Utiliza javascript para responder al encabezado.
En el archivo .html tengo:
En el archivo .js tengo
Cuando escribo test100 en el indicador, irá a donde he colocado span id = "test100" en el archivo html.
Yo uso Google Chrome.
Nota: Esta idea proviene de vincular en la misma página usando
que al hacer clic se enviará al ancla. Para que funcione varias veces, por experiencia debe volver a cargar la página.
El crédito a la gente en stackoverflow (y posiblemente stackexchange, también) no puede recordar cómo reuní todos los fragmentos. ☺
fuente