Búsqueda de sitios web

javascript - ¿Cómo puedo mantenerme en la misma página al hacer clic en enlaces de anclaje internos, usando Aurelia?


Estoy trabajando en una guía de estilo para un proyecto y actualmente me gustaría tener un comportamiento básico de clic en los enlaces de anclaje, para que se desplacen al id correspondiente.

Como ejemplo:

<a href="#section"></a>

Eso se desplaza hacia abajo a:

<div id="section"></div>

En Aurelia, el comportamiento por defecto es tratar los enlaces como rutas. No puedo hacer que funcione el enlace interno, ya que inmediatamente me envía a una página externa.

¿Alguien sabe cómo superar este problema? ¡Gracias!

Respuesta #1

Puedes desactivar que el enrutador de Aurelia secuestre el enlace de varias maneras diferentes, según la documentación. Una de las maneras es usar uno de estos atributos especiales:

<a href="/some/link" download>Skip Hijacking</a>
<a href="/some/link" download="">Skip Hijacking</a>
<a href="/some/link" router-ignore>Skip Hijacking</a>
<a href="/some/link" router-ignore="">Skip Hijacking</a>
<a href="/some/link" data-router-ignore>Skip Hijacking</a>
<a href="/some/link" data-router-ignore="">Skip Hijacking</a>

Respuesta #2

Solo añade un controlador de eventos de clic a tu enlace y usa scrollIntoView().

Aquí hay un fiddle funcional, ábrelo en una página de pantalla completa para probarlo :)

document.getElementById('myLink').onclick = function(e){
  document.getElementById('myDiv').scrollIntoView();
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
</head>
<body>
<a id="myLink">Click me!</a>
    <br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>  
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>  
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>  
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
    .<br/>
  <div id="myDiv">Hi there!</div>
</body>
</html>

Artículos relacionados