2010-07-09 23 views
57

Ist es möglich, ein neues Location-Objekt in JavaScript zu erstellen? Ich habe eine URL als String und ich möchte das nutzen, was Javascript bereits bietet, um Zugang zu den verschiedenen Teilen davon zu erhalten.Erstellen eines neuen Location-Objekts in JavaScript

Hier ist ein Beispiel dafür, was ich rede (Ich weiß, das nicht funktioniert):

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

Ist so etwas möglich oder würde ich muss im Wesentlichen das selbst Objekt erstellen?

Antwort

111

Nun, könnten Sie ein Ankerelement verwenden, um die URL-Teile, zum Beispiel zu extrahieren:

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

Es ist auf allen modernen Browsern und sogar auf IE 5.5+.

Überprüfen Sie ein Beispiel here.

0

Sie können es in einer Regex analysieren die Teile zu erhalten, wie passt ... ich jetzt nicht den vollständigen Code haben, aber dies kann verwendet werden, die querydata zu bekommen:

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

treffer [ 0] ist die vollständige Zeichenfolge, Übereinstimmungen (1) ist der erste Teil der URL (bis zum?) ... Sie könnten einen regulären Ausdruck erstellen, um jeden Teil einer Zeichenfolgen-URL zu analysieren, wenn Sie möchten ...

Sie können auch eine der vielen Bibliotheken dafür verwenden.

8

Sie können die Leistung eines Ankerelement nutzen

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

Wie über die Verwendung der Standard-URL object?

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

Warnung: Diese Schnittstelle ist ein bisschen neu, so wenden Sie sich bitte, die compatibility table überprüfen und Ihre Tests an Ziel Browsern.

Verwandte Themen