Estoy tratando de eliminar todo después del "?" en la URL del navegador en el documento listo.
Esto es lo que estoy intentando:
jQuery(document).ready(function($) {
var url = window.location.href;
url = url.split('?')[0];
});
Puedo hacer esto y ver que funciona a continuación:
jQuery(document).ready(function($) {
var url = window.location.href;
alert(url.split('?')[0]);
});
javascript
jquery
Derek
fuente
fuente
.ready()
? No necesita esperar para redirigir a una nueva URL o simplemente usar.pushState()
como lo recomendó Joraid.Respuestas:
TL; DR
1- Para modificar la URL actual y añadir / inyección que (el nuevo URL modificada) como una nueva entrada a la lista de URL de la historia, el uso
pushState
:2- Para reemplazar la URL actual sin agregarla a las entradas del historial, use
replaceState
:3- Dependiendo de su lógica de negocio ,
pushState
será útil en casos como:desea apoyar el botón de retroceso del navegador
desea crear una nueva URL, agregar / insertar / insertar la nueva URL en las entradas del historial y convertirla en la URL actual
permitiendo a los usuarios marcar la página con los mismos parámetros (para mostrar el mismo contenido)
para acceder mediante programación a los datos a través del
stateObj
análisis luego desde el anclaComo entendí por su comentario, desea limpiar su URL sin redirigir nuevamente.
Tenga en cuenta que no puede cambiar la URL completa. Simplemente puede cambiar lo que viene después del nombre del dominio. Esto significa que no puedes cambiar
www.example.com/
pero puedes cambiar lo que viene después.com/
Antecedentes
Nosotros podemos usar:
1- El método pushState () si desea agregar una nueva URL modificada a las entradas del historial.
2- El método replaceState () si desea actualizar / reemplazar la entrada del historial actual .
Código
Para hacerlo, usaré el método pushState () para este ejemplo, que funciona de manera similar al siguiente formato:
Siéntase libre para sustituir
pushState
conreplaceState
base en sus necesidades.Puede sustituir el parámetro
"object or string"
con{}
y"Title"
condocument.title
para que la declaración final se convierta en:Resultados
Las dos líneas de código anteriores crearán una URL como:
Convertirse:
Acción
Ahora intentemos un enfoque diferente. Digamos que necesita mantener el nombre del archivo. El nombre del archivo viene después del último
/
y antes de la cadena de consulta?
.Estarán:
Algo como esto lo hará funcionar:
ACTUALIZAR:
Para los fanáticos de una línea, intente esto en su consola / firebug y la URL de esta página cambiará:
La URL de esta página cambiará de:
A
Nota: como Samuel Liew indicó en los comentarios a continuación, esta característica se ha introducido solo para
HTML5
.Un enfoque alternativo sería redirigir realmente su página (pero perderá la cadena de consulta `? ', ¿Sigue siendo necesaria o los datos se han procesado?).
fuente
replaceState
parece encajar mejor, peropushState
también funcionará, hasta que comiences a hacer clic en los botones Atrás y Adelante en el navegador y te des cuenta de que hay una razón por la que hay bibliotecas completas para trabajar con la API de historial.url.substring(url.lastIndexOf('/') + 1);
en absoluto.url.split("?")[0]
obtendrá la parte anterior al primer signo de interrogación, que es todo lo que creo que solicitó el OP. La pregunta del OP es: "Estoy tratando de eliminar todo después de"? "En la URL del navegador".Todo esto es engañoso, nunca querrás agregarlo al historial del navegador a menos que quieras ir a una página diferente en una aplicación de una sola página. Si desea eliminar los parámetros sin un cambio en la página, debe usar:
fuente
Una forma sencilla de hacerlo, funciona en cualquier página, requiere HTML 5
fuente
Creo que el mejor y más simple método para esto es:
fuente
si tengo una etiqueta especial al final de mi URL como: http://dominio.com/?tag=12345 Aquí está el siguiente código para eliminar esa etiqueta siempre que se presente en la URL:
Esto da la idea de eliminar uno o más (o todos) parámetros de la URL
Con window.location.pathname básicamente obtienes todo antes de '?' en la url.
fuente
Quería eliminar solo un parámetro
success
. Así es como puedes hacer esto:Esto también se conserva
#hash
.URLSearchParams
no funcionará en IE, pero se está trabajando para Edge . Puede usar un polyfill o podría usar una función de ayuda ingenua para el soporte de IE:Esto se puede usar como:
fuente
take_param
que ya está haciendo eso, sino que pueden hacer que laURLSearchParams
hacen lo mismo haciendo:history.replaceState(null, '', (params ? '?' + params : '') + location.hash)
. O como quieras.Mejor solucion:
fuente
Ninguna de estas soluciones realmente funcionó para mí, aquí hay una función compatible con IE11 que también puede eliminar múltiples parámetros:
fuente
fuente
Para borrar todos los parámetros, sin actualizar la página, Y si está usando HTML5, puede hacer esto:
history.pushState({}, '', 'index.html' ); //replace 'index.html' with whatever your page name is
Esto agregará una entrada en el historial del navegador. También podría considerar
replaceState
si no desea agregar una nueva entrada y solo desea reemplazar la entrada anterior.fuente
En jquery use <
fuente
Aquí hay un ES6 one liner que preserva el hash de ubicación y no contamina el historial del navegador al usar
replaceState
:fuente
location
akawindow.location
, por lo que la función tiene acceso a los globaleslocation
comol
el resto es básico replaceState como en todas las otras respuestas, está concatenando el nombre de ruta y el hash (example.com/#hash) como la nueva url. Espero que sea digerible, si no, hágamelo saber 😉window.history.replaceState({}, '', location.pathname + location.hash)
? ;)location
2 veces 😁 pero no necesitas asignarlo a una variable 😉 o ¿hay más que hacer, Joey?