2010-07-09 11 views
57

È possibile creare un nuovo oggetto posizione in javascript? Ho un URL come stringa e vorrei sfruttare ciò che JavaScript fornisce già per accedere alle diverse parti di esso.Creazione di un nuovo oggetto posizione in javascript

Ecco un esempio di cosa sto parlando (so che questo non funziona):

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

è qualche cosa come questo possibile o io essenzialmente dovuto creare questo me stesso oggetto?

risposta

111

Beh, si potrebbe utilizzare un elemento di ancoraggio per estrarre i pezzi URL, ad esempio:

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

Funziona su tutti i browser moderni e anche su IE 5.5+.

Verificare un esempio here.

0

È possibile analizzare in una regex per ottenere le parti come partite ... non ho il codice completo in questo momento, ma questo può essere usato per ottenere il querydata:

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

partite [ 0] è la stringa completa, match (1) è la prima parte dell'URL (fino a?) ... potresti creare un'espressione regolare per analizzare ogni parte di un url di stringa se vuoi ...

Puoi anche usare una delle tante librerie già disponibili per questo.

8

È possibile sfruttare la potenza di un elemento di ancoraggio

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

Come circa l'uso dello standard URL object?

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

Attenzione: Questa interfaccia è un po 'nuovo, quindi, per favore, controllare il compatibility table e fare il vostro test a browser di destinazione.

Problemi correlati