2011-12-20 18 views
5

¿Hay una API de JavaScript (nativa) que ofrezca la "funcionalidad" de window.location a las URL personalizadas? algo en la línea defacilidad de gestión de URL?

var url = new URL("http://stackoverflow.com/question?hello=world#foo"); 
console.log(url.hostname, url.path); 
// out: "stackoverflow.com", "/question" 
url.hash = "bar"; 
url.query = ""; 
console.log(url); 
// out: "http://stackoverflow.com/question#bar" 

Estoy bastante seguro de que no hay una API nativa para esto (por alguna razón). Si alguien lo implementó, comparte el enlace.

+0

posible duplicado de [¿Cómo analizar una dirección URL en el nombre de host y la ruta en javascript?] (Http://stackoverflow.com/questions/736513/how-do-i- parse-a-url-into-hostname-and-path-in-javascript) – Cameron

+0

@Cameron Las preguntas pueden ser similares, pero la biblioteca a la que he vinculado no está allí, por ejemplo (y tal vez otras soluciones también). – deviousdodo

+0

@draevor: Sí, podría ser mejor mantener ambas (o fusionarlas, tal vez). – Cameron

Respuesta

3

Entonces la respuesta sería sí y no.

Como algunas respuestas sugieren, podría crear un elemento de anclaje y usarlo para hacer el análisis sintáctico, que es básicamente código nativo.

var url = document.createElement("A"); 
url.href = "http://stackoverflow.com/question?hello=world#foo"; 

console.log('// expected: "stackoverflow.com", "/question"'); 
console.log('//  got: "' + url.hostname + '", "' + url.pathname + '"'); 
output -->   got: "stackoverflow.com", "/question" 

url.hash = "bar"; 
url.search = ""; 

console.log('// expected: "http://stackoverflow.com/question#bar"'); 
console.log('//  got: "' + url.href + '"'); 
output -->   got: "http://stackoverflow.com/question?#bar" 

Demostración en directo: http://jsfiddle.net/roberkules/H48dt/

La única diferencia es que el ? no se elimina después de que se vacía la cadena de consulta.

El "API":

url.protocol 
url.host 
url.port 
url.pathname 
url.search 
url.hash 
+0

no sabía que eso fuera posible, gracias. (No ayuda mucho, sin embargo) – rodneyrehm

2

Como no había API útil para trabajar con direcciones URL, he construido yo mismo: URI.js.

Le permite leer/escribir componentes de una URL a través de una API similar a jQuery y tiene algunas funciones útiles para trabajar con cadenas de consulta, normalizar URL y crear rutas relativas/absolutas.

Feliz Navidad, disfrutar :)