2010-07-09 17 views
57

¿Es posible crear un nuevo objeto de ubicación en javascript? Tengo una url como cadena y me gustaría aprovechar lo que javascript ya proporciona para obtener acceso a las diferentes partes de la misma.Crear un nuevo objeto de ubicación en javascript

He aquí un ejemplo de lo que estoy hablando (sé que esto no funciona):

var url = new window.location("http://www.example.com/some/path?name=value#anchor"); 
var protocol = url.protocol; 
var hash = url.hash; 
// etc etc 

es algo como esto sea posible o sería que en esencia tiene que crear este objeto a mí mismo?

Respuesta

111

Bueno, se podría utilizar un elemento de anclaje para extraer las partes URL, por ejemplo:

var url = document.createElement('a'); 
url.href = "http://www.example.com/some/path?name=value#anchor"; 
var protocol = url.protocol; 
var hash = url.hash; 

alert('protocol: ' + protocol); 
alert('hash: ' + hash); 
​ 

Funciona en todos los navegadores modernos e incluso en IE 5.5 o superior.

Consulte un ejemplo here.

0

Usted puede analizar en una expresión regular para conseguir las piezas como partidos ... no tengo el código completo en este momento, pero esto se puede utilizar para obtener el queryData:

var myUrl = window.location.href; 
var matches = myUrl.match(/([^\?]+)\?(.+)/); 
var queryData = matches[2]; 

partidos [ 0] es la cadena completa, coincidencias (1) es la primera parte de la URL (¿hasta el?) ... puede construir una expresión regular para analizar cada parte de una url de cadena si lo desea ...

También puede usar una de las muchas bibliotecas que existen para esto.

8

Puede aprovechar la potencia de un elemento de anclaje

var aLink = document.createElement("a"); 
aLink.href="http://www.example.com/foo/bar.html?q=123#asdf"; 
alert(aLink.pathname); 
16

¿Cómo sobre el uso de la norma URL object?

var url = new URL("http://www.example.com/some/path?name=value#anchor"); 
var protocol = url.protocol; 
var hash = url.hash; 

Advertencia: Esta interfaz es un poco nuevo, así que, por favor, compruebe la compatibility table y hacer sus pruebas en los navegadores de destino.

Cuestiones relacionadas