Lấy URL hiện tại bằng JavaScript?


3004

Tất cả tôi muốn là để có được URL trang web. Không phải URL như được lấy từ một liên kết. Khi tải trang, tôi cần có thể lấy toàn bộ URL hiện tại của trang web và đặt nó làm biến để làm theo ý tôi.



Câu trả lời:


3686

Sử dụng:

window.location.href 

Như đã lưu ý trong các bình luận, dòng bên dưới hoạt động, nhưng nó đã bị lỗi đối với Firefox.

document.URL;

Xem URL của loại DOMString, chỉ đọc .


142
Trong Firefox 12, thuộc document.URLtính không cập nhật sau khi window.locationneo (#), trong khi window.location.hrefđó. Tôi đã kết hợp một bản demo trực tiếp tại đây: jsfiddle.net/PxgKy Tôi đã không thử nghiệm bất kỳ phiên bản Firefox nào khác. Không có vấn đề sử dụng document.URLđược tìm thấy trong Chrome 20 và IE9.
Telmo Marques

88
bạn cũng có thể có được máy chủ và vị trí rõ ràng: window.location.hostwindow.location.href.toString().split(window.location.host)[1]
ali youhannaei

8
và những gì document.baseURIvề sau đó. Về cơ bản có 3 cách để có được url document.baseURI, document.URL, & location.
Muhammad Umer

20
-1: Nếu bạn có khung, hình ảnh hoặc biểu mẫu name="URL"thì thuộc tính này sẽ bị bóng trên documentđối tượng và mã của bạn sẽ bị phá vỡ. Trong trường hợp đó, document.URLsẽ tham chiếu đến nút DOM thay thế. Tốt hơn để sử dụng các thuộc tính của đối tượng toàn cầu như trong window.location.href.
Roy Tinker

13
"window.location.href" cho chiến thắng
GabrielBB

662

Truy cập thông tin URL

JavaScript cung cấp cho bạn nhiều phương thức để truy xuất và thay đổi URL hiện tại, được hiển thị trên thanh địa chỉ của trình duyệt. Tất cả các phương thức này sử dụng Locationđối tượng, là một thuộc tính của Windowđối tượng. Bạn có thể tạo một Locationđối tượng mới có URL hiện tại như sau:

var currentLocation = window.location;

Cấu trúc URL cơ bản

<protocol>//<hostname>:<port>/<pathname><search><hash>
  • giao thức: Chỉ định tên giao thức được sử dụng để truy cập tài nguyên trên Internet. (HTTP (không có SSL) hoặc HTTPS (có SSL))

  • tên máy chủ: Tên máy chủ chỉ định máy chủ sở hữu tài nguyên. Ví dụ , www.stackoverflow.com. Một máy chủ cung cấp dịch vụ sử dụng tên của máy chủ lưu trữ.

  • cổng: Số cổng được sử dụng để nhận biết một quy trình cụ thể mà Internet hoặc tin nhắn mạng khác sẽ được chuyển tiếp khi đến máy chủ.

  • pathname: Đường dẫn cung cấp thông tin về tài nguyên cụ thể trong máy chủ mà máy khách Web muốn truy cập. Ví dụ , /index.html.

  • tìm kiếm: Chuỗi truy vấn tuân theo thành phần đường dẫn và cung cấp một chuỗi thông tin mà tài nguyên có thể sử dụng cho mục đích nào đó (ví dụ: làm tham số cho tìm kiếm hoặc dưới dạng dữ liệu cần xử lý).

  • hàm băm: Phần neo của URL, bao gồm dấu băm (#).

Với các Locationthuộc tính đối tượng này, bạn có thể truy cập tất cả các thành phần URL này và những gì chúng có thể đặt hoặc trả về:

  • href - toàn bộ URL
  • giao thức - giao thức của URL
  • máy chủ lưu trữ - tên máy chủ và cổng của URL
  • tên máy chủ - tên máy chủ của URL
  • cổng - số cổng mà máy chủ sử dụng cho URL
  • tên đường dẫn - tên đường dẫn của URL
  • tìm kiếm - phần truy vấn của URL
  • hàm băm - phần neo của URL

Tôi hy vọng bạn có câu trả lời của bạn ..


7
Chúng không phải là "phương thức" của window.location, mà là các thuộc tính và ở đây chúng ta có một ví dụ : var stringPathName = window.location.pathname.
Peter Krauss

@FabioC. Bạn có thể loại bỏ nó bằng cách substring. Tuy nhiên, nó có thể hữu ích khi bạn muốn sử dụng để chuyển hướng document.location = "/page.html";sẽ chuyển hướng đến trang gốcpage.html
FindOut_Quran

1
Câu trả lời này không chỉ là câu hỏi đã nêu. Trên thực tế, tôi đã tìm kiếm khoảng một tháng trước để tìm ra một cách hay để lấy một hoặc nhiều phần cụ thể ra khỏi chuỗi URL (tôi nghĩ đó có lẽ là trang hiện tại tôi đang cố gắng lấy), và mặc dù các câu hỏi khác có nhiều hơn -target, câu trả lời của họ không hữu ích và đơn giản cho mục đích đó như mục tiêu này.
Panzercrisis

1
Mặc dù vậy, một gợi ý nhanh: Trong cấu trúc URL cơ bản được mô tả ở trên, có một vị trí search, nhưng trong danh sách mô tả bên dưới, nó được gọi là a query. Có lẽ họ có thể được hòa giải, hoặc giải thích thêm có thể được thêm vào.
Panzercrisis

1
Nó được gọi là 'tìm kiếm' chứ không phải 'truy vấn'
Dữ liệu Apollo


264

Nhận URL trang hiện tại:

window.location.href

3
Lưu ý rằng đó là vị trí của cửa sổ không phải là tài liệu.
Gumbo

16
Đó là một thứ tương tự. URL hiện tại đầy đủ đề cập đến đường dẫn tài liệu (địa chỉ bên ngoài).
Zanoni

2
Được chuẩn hóa như document.url? (Ý tôi là một cái gì đó giống như một tài liệu w3c)
chendral

documentlà gốc của cây tài liệu được xác định bởi spec. windownói chung là tương đương nhưng nó có thể không ở trong một số trường hợp kỳ lạ.
broinjc

57

OK, nhận được URL đầy đủ của trang hiện tại thật dễ dàng bằng cách sử dụng JavaScript thuần túy. Ví dụ: thử mã này trên trang này:

window.location.href;
// use it in the console of this page will return
// http://stackoverflow.com/questions/1034621/get-current-url-in-web-browser"

Tài window.location.hrefsản trả về URL của trang hiện tại.

document.getElementById("root").innerHTML = "The full URL of this page is:<br>" + window.location.href;
<!DOCTYPE html>
<html>

<body>
  <h2>JavaScript</h2>
  <h3>The window.location.href</h3>
  <p id="root"></p>
</body>

</html>

Cũng không tệ khi đề cập đến những điều này là tốt:

  • nếu bạn cần một đường dẫn tương đối, chỉ cần sử dụng window.location.pathname;

  • nếu bạn muốn lấy tên máy chủ, bạn có thể sử dụng window.location.hostname;

  • và nếu bạn cần có giao thức riêng, hãy sử dụng window.location.protocol

    • Ngoài ra, nếu trang của bạn có hashthẻ, bạn có thể lấy nó như : window.location.hash.

Vì vậy, window.location.hrefxử lý tất cả trong một lần ... về cơ bản:

window.location.protocol + '//' + window.location.hostname + window.location.pathname + window.location.hash === window.location.href;
    //true

Cũng windowkhông cần sử dụng nếu đã có trong phạm vi cửa sổ ...

Vì vậy, trong trường hợp đó, bạn có thể sử dụng:

location.protocol

location.hostname

location.pathname

location.hash

location.href

Nhận URL hiện tại bằng JavaScript


window.location.protatio + '//' + window.location.hostname + window.location.pathname + window.location.hash === window.location.href; không phải lúc nào cũng đúng! window.location.pathname bị thiếu tham số GET.
Sát thủ

40

Để có được đường dẫn, bạn có thể sử dụng:

console.log('document.location', document.location.href);
console.log('location.pathname',  window.location.pathname); // Returns path only
console.log('location.href', window.location.href); // Returns full URL


35

Mở Công cụ dành cho nhà phát triển , nhập nội dung sau vào bảng điều khiển và nhấn Enter .

window.location

Ví dụ: Dưới đây là ảnh chụp màn hình của kết quả trên trang hiện tại.

nhập mô tả hình ảnh ở đây

Lấy những gì bạn cần từ đây. :)


29

Sử dụng : window.location.href.

Như đã lưu ý ở trên, document.URL không cập nhật khi cập nhật window.location. Xem MDN .


21
  • Sử dụng window.location.hrefđể có được URL hoàn chỉnh.
  • Sử dụng window.location.pathnameđể lấy URL rời khỏi máy chủ.

4
window.location.pathname không bao gồm phân đoạn truy vấn và băm
OMGPOP


10
var currentPageUrlIs = "";
if (typeof this.href != "undefined") {
       currentPageUrlIs = this.href.toString().toLowerCase(); 
}else{ 
       currentPageUrlIs = document.location.toString().toLowerCase();
}

Đoạn mã trên cũng có thể giúp ai đó


2
Bạn đã áp dụng .toLowerCase () cho url thực sự thay đổi nó. Một số máy chủ phân biệt chữ hoa chữ thường, (linux, v.v.)
AnthonyVO

Bạn nên sử dụng window.href. Mã này chỉ hoạt động trong ngữ cảnh có cửa sổ === này, tuy nhiên điều đó có thể không phải luôn luôn như vậy đặc biệt là nếu ai đó dán giải pháp này.
deadboy

Đây không phải là "một số" máy chủ phân biệt chữ hoa chữ thường. Đó là máy chủ NHẤT. Vì vậy, tôi đồng ý với AnthonyVO: thay đổi trường hợp của URL là một ý tưởng rất tồi.
mivk

Bạn không thể toLowerCase () một URL chắc chắn không phá vỡ nó !!! Nếu url là http://www.server.com/path/to/Script.php?option=A1B2C3, nếu hệ thống tệp phân biệt chữ hoa chữ thường (Linux / Unix) thì không cần Script.php và script.php giống nhau. Và ngay cả khi không phân biệt chữ hoa chữ thường (Windows, một số Mac Os), ?option=A1B2C3không giống ?option=a1b2c3hoặc thậm chí ?Option=A1B2C3. Chỉ có máy chủ là không phân biệt chữ hoa chữ thường: www.server.com hoặc www.SeRvEr.cOm đều giống nhau.
FrancescoMM

8

Thêm kết quả để tham khảo nhanh

window.location;

 Location {href: "/programming/1034621/get-the-current-url-with-javascript",
 ancestorOrigins: DOMStringList,
 origin: "https://stackoverflow.com",
 replace: ƒ, assign: ƒ, …}

tài liệu. Vị trí

  Location {href: "/programming/1034621/get-the-current-url-with-javascript", 
ancestorOrigins: DOMStringList,
 origin: "https://stackoverflow.com",
 replace: ƒ, assign: ƒ
, …}

window.location.pathname

"/questions/1034621/get-the-current-url-with-javascript"

window.location.href

"/programming/1034621/get-the-current-url-with-javascript"

địa điểm

"stackoverflow.com"

7

Đối với URL hoàn chỉnh với chuỗi truy vấn:

document.location.toString().toLowerCase();

Đối với URL máy chủ:

window.location

11
Bạn đã áp dụng .toLowerCase () cho url thực sự thay đổi nó. Một số máy chủ phân biệt chữ hoa chữ thường, (linux, v.v.)
AnthonyVO

Như đã nói, bạn không thể toLowerCase () một URL chắc chắn không phá vỡ nó !!! Nếu url là server.com/path/to/Script.php?option=A1B2C3 , nếu hệ thống tệp phân biệt chữ hoa chữ thường (Linux / Unix) thì không cần Script.php và script.php giống nhau. Và ngay cả khi không phân biệt chữ hoa chữ thường (Windows, một số Mac Os) ,? Tùy chọn = A1B2C3 không giống với? Tùy chọn = a1b2c3 hoặc thậm chí? Tùy chọn = A1B2C3. Chỉ có máy chủ là không phân biệt chữ hoa chữ thường: www.server.com hoặc www.SeRvEr.cOm đều giống nhau.
FrancescoMM

Cảm ơn AnthonyVO đã chỉ ra điều này. Chúng tôi chỉ có thể sử dụng document.location.toString () để nhận URL hoàn chỉnh. toLowerCase () là để so sánh như indexOf trong tập lệnh của bạn.
Syed Nasir Abbas

4

Trong jstl, chúng ta có thể truy cập đường dẫn URL hiện tại bằng cách sử dụng pageContext.request.contextPath. Nếu bạn muốn thực hiện một cuộc gọi Ajax, hãy sử dụng URL sau.

url = "${pageContext.request.contextPath}" + "/controller/path"

Ví dụ: Đối với trang http://stackoverflow.com/posts/36577223này sẽ cung cấp http://stackoverflow.com/controller/path.


4

Cách để có được đối tượng vị trí hiện tại là window.location.

So sánh điều này với document.location, ban đầu chỉ trả về URL hiện tại dưới dạng một chuỗi. Có lẽ để tránh nhầm lẫn, document.locationđã được thay thế bằng document.URL.

Và, tất cả các trình duyệt hiện đại ánh xạ document.locationtới window.location.

Trong thực tế, để an toàn trên nhiều trình duyệt, bạn nên sử dụng window.locationhơn là document.location.



3

Câu trả lời của Nikhil Agrawal rất hay, chỉ cần thêm một ví dụ nhỏ ở đây bạn có thể làm trong bảng điều khiển để xem các thành phần khác nhau đang hoạt động:

nhập mô tả hình ảnh ở đây

Nếu bạn muốn URL cơ sở không có đường dẫn hoặc tham số truy vấn (ví dụ: để thực hiện các yêu cầu AJAX để hoạt động trên cả máy chủ phát triển / dàn dựng và sản xuất), window.location.originthì tốt nhất là nó giữ giao thức cũng như cổng tùy chọn (trong phát triển Django, đôi khi bạn có một cổng không chuẩn sẽ phá vỡ nó nếu bạn chỉ sử dụng tên máy chủ, v.v.)


0
   location.origin+location.pathname+location.search+location.hash;

0

Bạn có thể nhận được liên kết đầy đủ của trang hiện tại thông qua location.href và để có được liên kết của bộ điều khiển hiện tại, hãy sử dụng:

location.href.substring(0, location.href.lastIndexOf('/'));

0

Lấy URL hiện tại bằng JavaScript:

  • window.location.toString ();

  • window.location.href


0

nếu bạn đang đề cập đến một liên kết cụ thể có id , mã này có thể giúp bạn.

$(".disapprove").click(function(){
    var id = $(this).attr("id");

    $.ajax({
        url: "<?php echo base_url('index.php/sample/page/"+id+"')?>",
        type: "post",
        success:function()
        {
            alert("The Request has been Disapproved");
            window.location.replace("http://localhost/sample/page/"+id+"");
        }
    });
});

Tôi đang sử dụng ajax ở đây để gửi id và chuyển hướng trang bằng window.location.replace . chỉ cần thêm một thuộc tính id=""như đã nêu.



-2

Trước tiên, kiểm tra trang được tải hoàn toàn trong

browser,window.location.toString();

window.location.href

sau đó gọi một hàm lấy url, biến URL và in trên bàn điều khiển,

$(window).load(function(){
   var url = window.location.href.toString();
   var URL = document.URL;
   var wayThreeUsingJQuery = $(location).attr('href');
   console.log(url);
   console.log(URL);
   console.log(wayThreeUsingJQuery );
});
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.