Pregunta

¿Es posible crear un nuevo objeto de ubicación en JavaScript?Tengo una URL como una cadena y me gustaría aprovechar lo que ya proporciona Javascript para obtener acceso a las diferentes partes de él.

Aquí hay un ejemplo de 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 posible o esencialmente tendría que crear este objeto yo mismo?

¿Fue útil?

Solución

Bueno, puede usar un elemento de anclaje para extraer las partes de la 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 +.

Revisa un ejemplo aquí .

Otros consejos

¿Qué tal si usa el estándar objeto de url ?

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 nueva, por lo que, si no está utilizando un transpirador , comprobar el compatibilidadTabla y realice sus pruebas en los navegadores de destino.

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);

Puede analizarlo en un regeo para obtener las partes como coincidencias ... No tengo el código completo en este momento, pero esto se puede usar para obtener el QueryData:

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

coincide con [0] es la cadena completa, coincide (1) es la primera parte de la URL (hasta el?) ... Podría acumular 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 ya están ahí para esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top