2010-07-09 25 views
57

Javascript'te yeni bir Konum nesnesi oluşturmak mümkün mü? Bir dize olarak bir dizim var ve javascript'in farklı bölümlerine erişim sağlamak için zaten sağladığı faydalardan yararlanmak istiyorum.javascript'te yeni bir Konum nesnesi oluşturma

İşte (bu çalışmıyor biliyorum) Ben neden bahsettiğimi bir örnek:

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

Böyle bir şey mümkün mü yoksa aslında bu kendimi nesne oluşturmak zorunda ki?

cevap

111

Eh, örneğin, url parçalarını ayıklamak için bir çapa elemanı kullanabilirsiniz:

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

O 5.5+ bile IE üzerinde tüm modern tarayıcılarda çalışır ve.

Örnek bir here kontrol edin.

0

Sen şu anda tam kodu bulunmayan ... eşleşmeleri olarak kısımlarını almak için bir regex bunu ayrıştırmak, ancak bu querydata almak için kullanılabilir:

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

maçlar [ 0] tam dizedir, eşleşmeler (1) URL'nin ilk kısmıdır (? 'A kadar) ... isterseniz dize URL'sinin her parçasını ayrıştırmak için düzenli bir ifade oluşturabilirsiniz ...

Bunun için zaten orada bulunan birçok kütüphaneden birini de kullanabilirsiniz.

8

Bir çapa elemanı kullanımı standart URL object hakkında

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

Nasıl gücünü artırabilecek?

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

Uyarı: Bu arayüz, compatibility table kontrol ve hedef tarayıcıları adresinden testleri lütfen, biraz yeni, yani.

İlgili konular