jQuery tiene un gran complemento para cambiar la URL de los navegadores, llamado jQuery-pusher .
JavaScript pushState
y jQuery podrían usarse juntos, como:
history.pushState(null, null, $(this).attr('href'));
Ejemplo:
$('a').click(function (event) {
// Prevent default click action
event.preventDefault();
// Detect if pushState is available
if(history.pushState) {
history.pushState(null, null, $(this).attr('href'));
}
return false;
});
Usando solo JavaScript history.pushState()
, que cambia el referente, que se usa en el encabezado HTTP para los objetos XMLHttpRequest creados después de cambiar el estado.
Ejemplo:
window.history.pushState("object", "Your New Title", "/new-url");
El método pushState ():
pushState()
toma tres parámetros: un objeto de estado, un título (que actualmente se ignora) y (opcionalmente) una URL. Examinemos cada uno de estos tres parámetros con más detalle:
objeto de estado: el objeto de estado es un objeto de JavaScript que está asociado con la nueva entrada del historial creada por pushState()
. Cada vez que el usuario navega al nuevo estado, se dispara un evento popstate y la propiedad de estado del evento contiene una copia del objeto de estado de la entrada del historial.
El objeto de estado puede ser cualquier cosa que se pueda serializar. Debido a que Firefox guarda los objetos de estado en el disco del usuario para que puedan restaurarse después de que el usuario reinicie su navegador, imponemos un límite de tamaño de 640k caracteres en la representación serializada de un objeto de estado. Si pasa un objeto de estado cuya representación serializada es más grande que esto pushState()
, el método arrojará una excepción. Si necesita más espacio que este, le recomendamos que use sessionStorage y / o localStorage.
title : Firefox actualmente ignora este parámetro, aunque puede usarlo en el futuro. Pasar la cadena vacía aquí debería estar a salvo de futuros cambios en el método. Alternativamente, puede pasar un título corto para el estado al que se está mudando.
URL : este parámetro proporciona la URL de la nueva entrada del historial. Tenga en cuenta que el navegador no intentará cargar esta URL después de una llamada a pushState()
, pero podría intentar cargar la URL más tarde, por ejemplo, después de que el usuario reinicie su navegador. La nueva URL no necesita ser absoluta; si es relativo, se resuelve en relación con la URL actual. La nueva URL debe ser del mismo origen que la URL actual; de lo contrario, pushState()
arrojará una excepción. Este parámetro es opcional; si no se especifica, se establece en la URL actual del documento.