Domanda

È possibile creare un nuovo oggetto Posizione in JavaScript?Ho un URL come una stringa e vorrei sfruttare ciò che c'è già JavaScript per accedere alle diverse parti di esso.

Ecco un esempio di quello di cui sto parlando (lo so che 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
.

è tutto ciò che è possibile o dovrei essenzialmente quello di creare questo oggetto da solo?

È stato utile?

Soluzione

Bene, è possibile utilizzare un elemento di ancoraggio per estrarre le parti dell'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 cioè 5.5 +.

Controlla un esempio qui .

Altri suggerimenti

Che ne dici di utilizzare lo standard Oggetto URL ?

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

Avvertenza : Questa interfaccia è un po 'nuova, quindi, se non stai usando un Transpiler , per favore, controllare il CompatibilitàTabella e fai i tuoi test nei browser di destinazione.

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

Puoi analizzarlo in un regex per ottenere le parti come partite ... non ho il codice completo in questo momento, ma questo può essere utilizzato per ottenere la queryData:

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

Abbinamenti [0] è la stringa completa, le partite (1) è la prima parte dell'URL (fino al?) ... potresti costruire un'espressione regolare per analizzare ogni parte di un URL della stringa se vuoi...

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top