Bagaimana cara mendapatkan URL tanpa parameter dalam JavaScript?


176

Jika saya menggunakan:

alert(window.location.href);

Saya mendapatkan semuanya termasuk string kueri. Apakah ada cara untuk mendapatkan bagian url utama, misalnya:

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

dari pada

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

kemungkinan duplikat Hapus kueri dari URL
Alex Angas

Jawaban:


283

Ini mungkin, tetapi Anda harus membuatnya secara manual dari locationobjek :

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

14
Perhatikan bahwa Anda tidak perlu menyediakan location.protocol karena semua browser modern (termasuk IE6) akan secara otomatis mewarisi protokol saat ini. yaitu:'//' + location.host + location.pathname
JonnyReeves

10
@JonnyReeves Jika Anda menggunakannya dalam dokumen saat ini, itu benar: poin bagus. Ada saat-saat ketika mungkin diperlukan, misalnya jika mengeluarkan URL sebagai teks biasa.
lonesomeday

1
@lonesomeday respons Anda menyiratkan itu satu-satunya cara, yang bukan.
Oddman

5
Port tidak ada, jadi ini akan mengembalikan hasil yang salah untuk halamanhttp://www.example.com:8080/asdf.html?foo=bar
izogfif

3
Anda dapat menyimpan beberapa karakter dengan location.origin, yang saya percaya juga alamat perhatian @ izogfif.
Coderer

171

Setiap jawaban agak berbelit-belit. Sini:

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

Bahkan jika a? tidak ada, masih akan mengembalikan argumen pertama, yang akan menjadi URL lengkap Anda, dikurangi string kueri.

Ini juga protokol-agnostik, artinya Anda bahkan bisa menggunakannya untuk hal-hal seperti ftp, itunes.etc.


39
jika Anda perlu menghapus jangkarwindow.location.href.split(/[?#]/)[0];
Bahattin Ungormus

memang setiap jawaban agak berbelit
mehmet

@mehmet semua telinga jika Anda memiliki pendekatan yang lebih sederhana :)
Oddman

1
@Oddman, saya benar-benar tidak ingat apa yang saya pikirkan saat itu, tapi saya kira itu mungkin pernyataan afirmatif :))
mehmet

Mengapa (jika ya) jawaban ini lebih baik daripada jawaban yang ditandai diterima ??
Vishal - JAVA - CQ

16

Menggunakan 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
Ini mengandaikan, parameter itu didefinisikan. Jauh lebih baik adalahurl.split('?')[0]
actimel

5

Anda dapat menggunakan ekspresi reguler: window.location.href.match(/^[^\#\?]+/)[0]


5

Anda dapat melakukan concat origindan pathname, jika ada port seperti itu example.com:80, itu akan dimasukkan juga.

location.origin + location.pathname

2

Jika Anda melihat dokumentasi Anda bisa mengambil hanya properti yang Anda minati dari windowobjek yaitu

protocol + '//' + hostname + pathname
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.