Estoy desarrollando una aplicación web. En él tengo una sección llamada categorías que cada vez que un usuario hace clic en una de las categorías, un panel de actualización carga el contenido apropiado.
Después de que el usuario hizo clic en la categoría, quiero cambiar la URL de la barra de direcciones del navegador de
www.mysite.com/products
a algo como
www.mysite.com/products/{selectedCat}
sin actualizar la página.
¿Existe algún tipo de API de JavaScript que pueda usar para lograr esto?
fuente
path
y / oquery string
en la URL; no pueden cambiar el protocolo, el dominio o el puerto (ya que eso sería un problema de seguridad como otros han señalado). Lahash
función anterior puede cambiar el ancla (o la identificación del fragmento)Para agregar a lo que los chicos ya han dicho, edite la propiedad window.location.hash para que coincida con la URL que desea en su función onclick.
fuente
Creo que manipular directamente la barra de direcciones a una URL completamente diferente sin moverse a esa URL no está permitido por razones de seguridad, si está satisfecho con que sea
www.mysite.com/products/#{selectedCat}
es decir, un enlace de estilo ancla dentro de la misma página y luego busque en los diversos scripts de historial / "botón de retroceso" que ahora están presentes en la mayoría de las bibliotecas de JavaScript.
La mención del panel de actualización me lleva a suponer que está usando asp.net, en ese caso, el control del historial de asp.net ajax es un buen lugar para comenzar
fuente
No creo que esto sea posible (al menos cambiar a una dirección totalmente diferente), ya que sería un mal uso no intuitivo de la barra de direcciones y podría promover ataques de phishing.
fuente
Esto no se puede hacer de la forma en que lo dice. El método sugerido por somej.net es el más cercano que puede obtener. En realidad, es una práctica muy común en la era AJAX. Incluso Gmail usa esto.
fuente
como sugiere sanchothefat debería ser la única forma de hacerlo. Porque en todos los lugares en los que he visto esta función, es todo el tiempo después del # en la URL.
fuente