URL'yi JavaScript'te herhangi bir parametre olmadan nasıl alabilirim?


176

Eğer kullanırsam:

alert(window.location.href);

Sorgu dizeleri dahil her şeyi alıyorum. Sadece ana url bölümünü almanın bir yolu var mı, örneğin:

http://mysite.com/somedir/somefile/

onun yerine

http://mysite.com/somedir/somefile/?foo=bar&loo=goo

Yanıtlar:


283

Bu mümkündür, ancak locationnesneyi manuel olarak oluşturmanız gerekir :

location.protocol + '//' + location.host + location.pathname

14
Tüm modern tarayıcılar (IE6 dahil) geçerli protokolü otomatik olarak devralacağı için location.protocol öğesini sağlamanız gerekmediğini unutmayın. ie:'//' + location.host + location.pathname
JonnyReeves '

10
@JonnyReeves Geçerli belgede kullanıyorsanız, bu doğrudur: iyi bir nokta. Gerekli olabileceği durumlar vardır, örneğin URL'yi düz metin olarak çıkarıyorsanız.
lonesomeday

1
@lonesomeday Yanıtınız bunun tek yol olduğunu ima ediyor, öyle değil.
Oddman

5
Bağlantı noktası eksik, bu nedenle sayfa için yanlış sonuç döndürecekhttp://www.example.com:8080/asdf.html?foo=bar
izogfif

3
location.origin@ İzogfif'in endişesini de giderdiğine inandığım birkaç karakter kaydedebilirsiniz .
Coderer

171

Her cevap oldukça kıvrımlıdır. Buraya:

var url = window.location.href.split('?')[0];

A olsa bile? yoksa, tam URL'niz eksi sorgu dizesi olacak ilk argümanı yine de döndürür.

Ayrıca protokol agnostiktir, yani ftp, itunes.etc gibi şeyler için bile kullanabilirsiniz.


39
ankrajları çıkarmanız gerektiğindewindow.location.href.split(/[?#]/)[0];
Bahattin Ungormus

gerçekten her cevap oldukça kıvrımlıdır
mehmet

Daha basit bir yaklaşımınız varsa @mehmet tüm kulaklar :)
Oddman

1
@Oddman, o zaman ne düşündüğümü kesinlikle hatırlamıyorum, ama sanırım bu olumlu bir ifade olabilir :))
mehmet

Bu cevabı neden kabul edilmiş olandan daha iyi?
Vishal - JAVA - CQ

16

kullanım indexOf

var url = "http://mysite.com/somedir/somefile/?aa";

if (url.indexOf("?")>-1){
url = url.substr(0,url.indexOf("?"));
}

5
var url = "tp://mysite.com/somedir/somefile/?foo=bar&loo=goo"    

url.substring(0,url.indexOf("?"));

3
Bu, bu parametrenin tanımlandığını varsayar. Çok daha iyiurl.split('?')[0]
actimel

5

Normal bir ifade kullanabilirsiniz: window.location.href.match(/^[^\#\?]+/)[0]


5

Concat originve pathnameeğer böyle bir port varsa example.com:80, o da dahil edilecektir.

location.origin + location.pathname

2

Belgelere bakarsanız, sadece ilgilendiğiniz özellikleri windownesneden alabilirsiniz.

protocol + '//' + hostname + pathname
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.