cara mendapatkan url host menggunakan javascript dari halaman saat ini

183

Mengingat bahwa saya ada di halaman berikut:

http://www.webmail.com/pages/home.aspx

Bagaimana saya bisa mengambil nama host ( "http://www.webmail.com") dengan JavaScript?

karthik k
sumber
3
kemungkinan rangkap dari Dapatkan nama host dalam JavaScript
T.Todua

Jawaban:

319
var host = window.location.hostname;

atau mungkin

var host = "http://"+window.location.hostname;

atau jika Anda suka penggabungan

var protocol = location.protocol;
var slashes = protocol.concat("//");
var host = slashes.concat(window.location.hostname);
Eric Herlitz
sumber
3
Mungkin tidak menentukan secara spesifik http. Gunakan protokol relatif. Mungkin lebih tepat daripada hard-coding.
Darth Egregious
33
Gunakan window.location.host daripada hostname, atau itu akan gagal jika port tidak 80.
Stefan Steiger
1
@MattBrowne Ketika bekerja dengan sesuatu yang akan menghasilkan string saya katakan Anda harus selalu menggunakan concat. Sebagai contoh var a = 1 + 2 + " should be 12";vs versi concat ini var a = "".concat(1).concat(2).concat(" should be 12");. Menggunakan concat akan menghemat banyak masalah +untuk perhitungan, bukan penggabungan.
Eric Herlitz
3
hostnamehanya akan memberikan domain dan hostakan menyediakan port juga. Ini adalah alat mini yang hebat untuk melihat tautan anatomi bl.ocks.org/abernier/3070589
Lukas Liesis
4
window.location.origin bekerja dengan baik juga - termasuk protokol dan porta.
rothschild86
96

Untuk mendapatkan nama host: location.hostname

Tetapi contoh Anda sedang mencari skema juga, jadi location.origintampaknya melakukan apa yang Anda inginkan di Chrome, tetapi tidak disebutkan dalam dokumen Mozdev. Anda dapat membangunnya dengan

location.protocol + '//' + location.hostname

Jika Anda menginginkan nomor port juga (untuk saat tidak 80) maka:

location.protocol + '//' + location.host
Quentin
sumber
Firefox 4 tampaknya tidak memilikinya, meskipun Chrome 12 memilikinya. Apakah ini didefinisikan dalam spesifikasi?
Delan Azabani
Hai..Untuk mendapatkan porta, contohnya bekerja seperti pesona .. Terima kasih untuk itu
karthik k
FF mendukung location.origin sejak 21.0: developer.mozilla.org/en-US/docs/Web/API/Window.location
zifot
67

Anda bisa mendapatkan protokol, host, dan port menggunakan ini:

window.location.origin

Kompatibilitas browser

Desktop

| Chrome                           | Edge  | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit)                            |
|----------------------------------|-------|-----------------|-------------------|-------|--------------------------------------------|
| (Yes)                            | (Yes) | (Yes)           | (Yes)             | (Yes) | (Yes)                                      |
| 30.0.1599.101 (possibly earlier) | ?     | 21.0 (21.0)     | 11                | ?     | 7 (possibly earlier, see webkit bug 46558) |

Mobile

| Android                          | Edge  | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile                              |
|----------------------------------|-------|------------------------|----------|--------------|--------------------------------------------|
| (Yes)                            | (Yes) | (Yes)                  | (Yes)    | (Yes)        | (Yes)                                      |
| 30.0.1599.101 (possibly earlier) | ?     | 21.0 (21.0)            | ?        | ?            | 7 (possibly earlier, see webkit bug 46558) |

Semua kompatibilitas browser berasal dari Jaringan Pengembang Mozilla

Monso
sumber
4
Saya harus menyebutkan IE tidak mendukung ini.
Monso
Harap sebutkan bahwa ini fitur baru dan tidak didukung oleh browser lama.
kabirbaidhya
@kabirbaidhya Bagaimana dengan kompatibilitas verbose!
Monso
Baik. Tetapi apa yang terjadi ketika orang-orang MDN memperbarui tabel kompatibilitas browser, yang cukup sering terjadi dengan rilis browser yang lebih baru. Anda mungkin perlu terus memperbarui ini untuk menyinkronkan dengan tabel mereka;).
kabirbaidhya
Tidak juga, ini adalah versi yang paling awal untuk mendukungnya bukan yang terbaru dan semua browser yang mereka lihat sudah mendukungnya. Ini hanya akan berubah jika mereka memutuskan untuk memasukkan browser lain yang dapat mengetahui nomor versi pada beberapa browser yang didukung yang agak diperdebatkan karena sebagian besar yang lebih baru berasal dari rilis awal mereka.
Monso
7
let path = window.location.protocol + '//' + window.location.hostname + ':' + window.location.port;
pengguna3601578
sumber
6

Ini seharusnya bekerja:

window.location.hostname
GordyD
sumber
atau hostjika Anda juga memerlukan port
Lukas Liesis
5

Tergantung pada kebutuhan Anda, Anda dapat menggunakan salah satu window.locationproperti. Dalam pertanyaan Anda, Anda bertanya tentang tuan rumah , yang dapat diambil menggunakan window.location.hostname(misalnya www.example.com). Dalam contoh Anda, Anda menunjukkan sesuatu yang disebut asal , yang dapat diambil dengan menggunakan window.location.origin(misalnya http://www.example.com).

var path = window.location.origin + "/";

//result = "http://localhost:60470/"
Mahmoud salah eldien saber
sumber
2

Saya suka yang ini tergantung tujuannya

window.location.href.split("/")[2] == "localhost:17000" //always domain + port

Anda dapat menerapkannya pada url-string apa pun

var url = "http://localhost:17000/sub1/sub2/mypage.html?q=12";
url.split("/")[2] == "localhost:17000"
url.split("/")[url.split("/").length-1] == "mypage.html?q=12"

Menghapus protokol, domain & jalur dari url-string (jalur relatif)

var arr = url.split("/");
if (arr.length>3)
   "/" + arr.splice(3, arr.length).join("/") == "/sub1/sub2/mypage.html?q=12"
Gosso
sumber