Cách lấy url máy chủ bằng cách sử dụng javascript từ trang hiện tại


Câu trả lời:


318
var host = window.location.hostname;

hoặc có thể

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

hoặc nếu bạn thích ghép

var protocol = location.protocol;
var slashes = protocol.concat("//");
var host = slashes.concat(window.location.hostname);

3
Có lẽ không chỉ định httpmặc dù. Sử dụng giao thức tương đối. Có thể thích hợp hơn mã hóa cứng.
Darth Egregious

33
Sử dụng window.location.host thay vì tên máy chủ, hoặc nó sẽ thất bại nếu cổng không phải là 80.
Stefan Steiger

1
@MattBrowne Khi làm việc với thứ gì đó sẽ tạo ra một chuỗi tôi muốn nói bạn nên luôn luôn sử dụng concat. Trong ví dụ var a = 1 + 2 + " should be 12";vs phiên bản concat của cái này var a = "".concat(1).concat(2).concat(" should be 12");. Sử dụng concat sẽ giúp bạn tiết kiệm rất nhiều rắc rối +là để tính toán chứ không phải ghép.
Eric Herlitz

3
hostnamesẽ chỉ cung cấp tên miền và hostcũng sẽ cung cấp cổng. Đây là công cụ nhỏ tuyệt vời để xem liên kết giải phẫu bl.ocks.org/abernier/3070589
Lukas Liesis

4
window.location.origin cũng hoạt động tốt - nó bao gồm giao thức và cổng.
rothschild86

96

Để có được tên máy chủ: location.hostname

Nhưng ví dụ của bạn cũng đang tìm kiếm lược đồ, vì vậy location.origindường như thực hiện những gì bạn muốn trong Chrome, nhưng không được đề cập trong các tài liệu Mozdev. Bạn có thể xây dựng nó với

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

Nếu bạn cũng muốn số cổng (vì khi đó không phải là 80) thì:

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

Firefox 4 dường như không có nó, mặc dù Chrome 12 thì có. Được xác định trong một đặc điểm kỹ thuật?
Delan Azabani

Xin chào..Để nhận cổng, ví dụ hoạt động như một bùa mê .. Cảm ơn vì điều đó
k

FF hỗ trợ location.origin kể từ 21.0: developer.mozilla.org/en-US/docs/Web/API/Window.location
zifot

67

Bạn có thể lấy giao thức, máy chủ và cổng bằng cách sử dụng:

window.location.origin

Tính tương thích của trình duyệt web

Máy tính để bàn

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

Di động

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

Tất cả khả năng tương thích trình duyệt là từ Mozilla Developer Network


4
Tôi nên đề cập đến IE không hỗ trợ này.
Monso

Vui lòng đề cập rằng đó là một tính năng mới và không được hỗ trợ bởi các trình duyệt cũ.
kabirbaidhya

@kabirbaidhya Làm thế nào về khả năng tương thích verbose!
Monso

Tốt Nhưng điều gì xảy ra khi các MDN cập nhật bảng tương thích trình duyệt, điều này xảy ra khá thường xuyên với các bản phát hành trình duyệt mới hơn. Bạn có thể cần tiếp tục cập nhật thông tin này để đồng bộ hóa với bảng của họ;).
kabirbaidhya

Không thực sự, đây là phiên bản biết sớm nhất để hỗ trợ nó không phải là phiên bản mới nhất và tất cả các trình duyệt họ xem đã hỗ trợ nó. Điều này sẽ chỉ thay đổi nếu họ quyết định đưa vào một trình duyệt khác có thể tìm ra số phiên bản trên một số trình duyệt được hỗ trợ, điều này hơi khó hiểu vì hầu hết các trình duyệt mới hơn là từ bản phát hành ban đầu.
Monso



5

Tùy thuộc vào nhu cầu của bạn, bạn có thể sử dụng một trong các window.locationthuộc tính. Trong câu hỏi của bạn, bạn đang hỏi về máy chủ lưu trữ , có thể được truy xuất bằng cách sử dụng window.location.hostname(ví dụ www.example.com). Trong ví dụ của bạn, bạn đang hiển thị một cái gì đó được gọi là nguồn gốc , có thể được lấy ra bằng cách sử dụng window.location.origin(ví dụ http://www.example.com).

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

//result = "http://localhost:60470/"

2

Tôi thích cái này tùy theo mục đích

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

Bạn có thể áp dụng nó trên bất kỳ chuỗi url nào

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"

Xóa giao thức, tên miền & đường dẫn khỏi chuỗi url (đường dẫn tương đối)

var arr = url.split("/");
if (arr.length>3)
   "/" + arr.splice(3, arr.length).join("/") == "/sub1/sub2/mypage.html?q=12"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.