route - javascript change url without reloading
URL actual sin parĂ¡metros, hash, http(s):// (8)
Estoy buscando una forma clara de obtener la URL del documento actual en Javascript.
- La URL debe estar limpia de parámetros (? Parámetro1 = bla y parámetro2 = bla)
- La URL debe estar limpia de etiquetas hash (#jumppoint)
- http / https debe ser eliminado / consolidado en http
Sé que puedo obtener la URL actual con location.href y luego usar algunas expresiones regulares para limpiarla, pero ¿tal vez haya una solución mejor / más limpia para deshacerme de la basura?
El objeto Location tiene lo que necesitas
window.location.hostname + window.location.pathname
Ninguna de las respuestas dadas aborda el hecho de que el protocolo puede ser http o https como en el título de OP. Para acomodar esto sugiero:
document.location.protocol +"//"+ document.location.hostname + document.location.pathname
Por favor, intente este fragmento:
if (!window.location.origin){
// For IE
window.location.origin = window.location.protocol + "//" + (window.location.port ? '':'' + window.location.port : '''');
}
url = window.location.origin + window.location.pathname;
document.write(''Origin url: '' + url);
Puede usar estas funciones de reemplazo para eliminar el hash y los argumentos de búsqueda y normalizar https a http:
url = url.replace(/#[^#]*$/, "").replace(//?[^/?]*$/, "").replace(/^https:/, "http:");
O, si todo lo que realmente quieres es el dominio y la ruta, puedes usar esto:
window.location.hostname + window.location.pathname
Tienes el objeto document.location
, por lo que:
var oLoc = document.location,
sUrl = oLoc.protocol + oLoc.hostname;
// or "http://" + oLoc.hostname
Tratar:
window.location.hostname;
This página indica que probablemente podría usar window.location.host
para obtener la parte que realmente le interesa. Sin embargo, no la he probado.
Hay muchos otros parámetros además del href
en window.location
. Vea la referencia completa aquí: https://developer.mozilla.org/en/DOM/window.location
Lo que está buscando como titular podría ser window.location.hostname
:
"el nombre de host (sin el número de puerto o los corchetes)".
En la URL de ejemplo http://[www.example.com]:80/search?q=devmo#test
el nombre de host será www.example.com
.
Si también desea incluir la ruta y forzar un protocolo http: //, intente:
''http://'' + window.location.hostname + window.location.pathname;
Como nota al margen, un truco ingenioso para obtener los mismos parámetros de otra URL que no sea window.location es crear un ancla vacía:
var a = document.createElement(''a'');
a.href = ''http://www.example.com:80/search?q=devmo#test'';
console.log(''http://'' + a.hostname + a.pathname);