jquery, tên miền, nhận URL


140

Làm thế nào tôi có thể nhận được tên miền với jquery ??

Câu trả lời:


335

Bạn không cần jQuery cho việc này, vì javascript đơn giản sẽ đủ:

alert(document.domain);

Xem nó trong hành động:

console.log("Output;");  
console.log(location.hostname);
console.log(document.domain);
alert(window.location.hostname)

console.log("document.URL : "+document.URL);
console.log("document.location.href : "+document.location.href);
console.log("document.location.origin : "+document.location.origin);
console.log("document.location.hostname : "+document.location.hostname);
console.log("document.location.host : "+document.location.host);
console.log("document.location.pathname : "+document.location.pathname);

Để biết thêm các giá trị liên quan đến tên miền, hãy xem các thuộc tính của window.locationtrực tuyến. Bạn có thể thấy đó location.hostlà một lựa chọn tốt hơn, vì nội dung của nó có thể khác với document.domain. Chẳng hạn, url http://192.168.1.80:8080sẽ chỉ có ipaddress trong document.domain, nhưng cả ipaddress và số cổng trong location.host.


7
@ rob.alarcon Đó là khuyến nghị của W3C và có sự hỗ trợ rất rộng rãi giữa các trình duyệt, cũ và mới. Vấn đề duy nhất tôi biết là một số trình duyệt ( như Firefox ) sẽ cho phép bạn viết vào thuộc tính này (chỉ đọc theo thông số) miễn là giá trị mới là tên miền phụ của tên miền gốc.
Sampson

4
Tôi thực sự sẽ khuyên bạn nên sử dụng window.location.host(như bibby đã đăng). Tôi vừa sửa một lỗi trong đó document.domainđang được đặt thành tên miền gốc thay vì tên miền phụ.
Derek Morrison

Trong IE11 document.location.origintrả về undefined.
TimothyBuktu

113

BIÊN TẬP:

Nếu bạn không cần hỗ trợ IE10, bạn chỉ cần sử dụng: document.location.origin

Câu trả lời gốc, nếu bạn cần hỗ trợ di sản

Bạn có thể nhận được tất cả điều này và hơn thế nữa bằng cách kiểm tra đối tượng vị trí:

location = {
  host: "stackoverflow.com",
  hostname: "stackoverflow.com",
  href: "http://stackoverflow.com/questions/2300771/jquery-domain-get-url",
  pathname: "/questions/2300771/jquery-domain-get-url",
  port: "",
  protocol: "http:"
}

vì thế:

location.host 

sẽ là tên miền, trong trường hợp này là stackoverflow.com. Đối với phần đầu tiên của url, bạn có thể sử dụng:

location.protocol + "//" + location.host

trong trường hợp này sẽ là http://stackoverflow.com

Không cần jQuery.



@ Đối với url hoàn chỉnh, tại sao không sử dụng document.location.originsẽ dẫn đến https://stackoverflow.com . Phương pháp này bao gồm giao thức thích hợp
Nathileo

33

Tương tự như câu trả lời trước khi có

location.host

Vị trí toàn cầu cũng có nhiều sự thật thú vị về url hiện tại. (giao thức, máy chủ, cổng, tên đường dẫn, tìm kiếm, băm)


20

Nếu bạn cần từ chuỗi, như tôi, hãy sử dụng chức năng này - nó thực sự hoạt động.

function getHost(url)
{
    var a = document.createElement('a');
    a.href = url;
    return a.hostname;
}

Nhưng lưu ý, nếu có một tên miền phụ (ví dụ www.) Trong URL, nó sẽ được trả về với tên máy chủ. Ngược lại, nếu không có tên miền phụ, tên máy chủ cũng sẽ không có tên miền.


@Vova Popov (hoặc ai đó) có thể vui lòng làm rõ câu cuối không? "www. ar không có www."?!?
Randall Cook

2
Anh ta nói rằng a.hostname sẽ trả lại www. đó là một phần của miền của bạn. Vì vậy, nói cách khác, điều này là sai: getHost('http://www.google.com') == 'google.com'trong khi điều này là đúng:getHost('http://google.com') == 'google.com'
Milimetric

9

Bạn có thể sử dụng các mã dưới đây để nhận các thông số khác nhau của URL hiện tại

alert("document.URL : "+document.URL);
alert("document.location.href : "+document.location.href);
alert("document.location.origin : "+document.location.origin);
alert("document.location.hostname : "+document.location.hostname);
alert("document.location.host : "+document.location.host);
alert("document.location.pathname : "+document.location.pathname);

Có cách nào để lấy máy chủ lưu trữ tệp js thay vì tài liệu không? ATM. Tôi đang thao tác phía máy chủ tệp js để có chuỗi "kết nối" này hoạt động nhưng có vẻ không hiệu quả vì tôi thích tệp js tĩnh.
yellowsir

6

Không cần jQuery, sử dụng javascript đơn giản:

document.domain

có thể không cần nó nhưng nói như thế bạn không trả lời được câu hỏi
Emiliano

Vâng, tôi không phải là một robot trả lời câu hỏi theo nghĩa đen. Tôi đã trả lời câu hỏi một cách thực tế khi biết mục tiêu cuối cùng là gì và bạn không cần jQuery để đạt được mục tiêu.
Adam

Tôi hiểu nhưng loại câu trả lời đó chưa đầy đủ, nếu bạn muốn bạn có thể trả lời tốt hơn
Emiliano

3

document.baseURIcung cấp cho bạn tên miền + cổng. Nó được sử dụng nếu thẻ hình ảnh sử dụng họ hàng thay vì đường dẫn tuyệt đối. Có lẽ đã được giải quyết, nhưng nó có thể hữu ích cho những người khác.


2
var part = location.hostname.split('.');
var subdomains = part.shift();
var upperleveldomains = part.join('.');

tên miền cấp hai, bạn có thể sử dụng

var sleveldomain = parts.slice(-2).join('.');

1

kiểm tra điều này

alert(window.location.hostname);

điều này sẽ trả về tên máy chủ là www.domain.com


0

theo như tôi thấy không ai đăng giải pháp jquery mà là mã javascript gốc.

Bạn phải vượt qua url dưới dạng một chuỗi và nó sẽ nhận được máy chủ mà không cần sử dụng regrec.

function getHostFromUrl(urlString) {
    return $a = $('<a>', {
        'href': urlString
    }).prop('host');
}

-2
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-z]+.)/,"");
}

-4
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-zA-Z0-9]+.)/,"");
}

3
nhưng nếu url đã không có tiền tố, nó sẽ xóa tên miền .. Ví dụ: "stackoveflow.com" sẽ trở thành "com"
Filipiz

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.- Jamie Zawinski
truyền giáo
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.