Câu hỏi Nhận URL hiện tại bằng JavaScript?


Tôi đang sử dụng jQuery. Làm thế nào để có được đường dẫn của URL hiện tại và gán nó cho một biến?

URL mẫu:

http://localhost/menuname.de?foo=bar&number=0

1584
2018-01-02 06:42


gốc


bạn cũng có thể thấy tech-blog.maddyzone.com/javascript/… - Rituraj ratan
Tôi nghĩ rằng câu hỏi nên được khôi phục để yêu cầu jQuery, vì có một câu trả lời cho điều đó, bất kể jQuery có cần thiết để thực hiện nhiệm vụ hay không. - goodeye
có thể trùng lặp Nhận URL hiện tại bằng JavaScript? - vimal1083
@ goodeye Không, không có cách jQuery để có được vị trí; như trình theo dõi lỗi của jQuery: »Nó có thể đã hoạt động nhưng chưa bao giờ được hỗ trợ hoặc ghi lại. Đơn giản chỉ cần sử dụng document.location.href nhanh hơn, đơn giản hơn và dễ hiểu hơn. Nói cách khác, một số người sử dụng jQuery để có được vị trí, nhưng họ dựa vào một lỗi, thay vì tính năng. Xem: bugs.jquery.com/ticket/7858 - feeela


Các câu trả lời:


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

var pathname = window.location.pathname; // Returns path only
var url      = window.location.href;     // Returns full URL

2134
2018-01-02 06:57



Thuộc tính của đối tượng vị trí: developer.mozilla.org/en/DOM/window.location - bentford
Ngoài việc giết chết nó, jQuery đã cho Javascript một cuộc sống mới. Lập trình viên C # / Java mới có hiểu được con trỏ không? Không. Họ có cần không? Không thực sự, trừu tượng mới hơn đủ mạnh để nó không thành vấn đề .. - flesh
"Làm thế nào để tôi XYZ trong jQuery" và câu trả lời là javascript đơn giản là khá phổ biến. Bạn có thể biết làm thế nào để làm một cái gì đó trong javascript đồng bằng; tuy nhiên, do trình duyệt không nhất quán, bạn có thể thích làm theo cách "jQuery" hơn. Tôi nhớ trước jQuery hoặc khung công tác trước tiên tôi sẽ kiểm tra trình duyệt và sau đó thực hiện những gì tôi muốn một số cách. Vì vậy, jQuery giết chết js đồng bằng ... có, cảm ơn thần, nhưng nó cũng làm cho nó có thể sử dụng. - Parris
điều này không hoạt động đối với url đầy đủ. ví dụ. cho "mail.google.com/mail/u/0/#mbox/13005b79fe72f448 "; điều này sẽ chỉ trả về / mail / u / 0 - dwaynemac
Ummm, ... window.location.pathname chỉ nhận URL lên "?" và không nhận được thông số truy vấn như được hỏi trong câu hỏi. - johntrepreneur


Trong phong cách jQuery thuần túy:

$(location).attr('href');

Đối tượng vị trí cũng có các thuộc tính khác, như máy chủ, băm, giao thức và tên đường dẫn.


778
2018-05-19 12:42



Rõ ràng, việc sử dụng $ (location) trong jQuery không được hỗ trợ và được khuyên dùng: bugs.jquery.com/ticket/7858 - Peter
@Peter Bug bị đóng không hợp lệ. - mc10
@ mc10: Phần "không hợp lệ" áp dụng cho yêu cầu hỗ trợ $ (vị trí); điều này KHÔNG nên được sử dụng. - Peter
Câu trả lời này là không cần thiết, và câu hỏi và câu trả lời có thể được cập nhật để không sử dụng jquery. Lý do có thể tìm thấy ở đây bugs.jquery.com/ticket/7858#comment:4 - Vishwanath
@ HaralanDobrev: Bạn không nên làm .attr() về vị trí. (1) Nó không phải là một yếu tố, vì vậy $(location)là bóng râm tốt nhất, và (2) ngay cả khi nó hoạt động, bạn nên sử dụng .prop() để có được tài sản. .attr() dành cho các thuộc tính HTML. - cHao


http://www.refulz.com:8082/index.php#tab2?foo=789

Property    Result
------------------------------------------
host        www.refulz.com:8082
hostname    www.refulz.com
port        8082
protocol    http:
pathname    index.php
href        http://www.refulz.com:8082/index.php#tab2
hash        #tab2
search      ?foo=789

var x = $(location).attr('<property>');

Điều này sẽ chỉ hoạt động nếu bạn có jQuery. Ví dụ:

<html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js">
</script>
  $(location).attr('href');      // http://www.refulz.com:8082/index.php#tab2
  $(location).attr('pathname');  // index.php
</script>
</html>

431
2018-01-30 21:10



Đó là lời giải thích tương tự mà trước đây, nhưng với tất cả các yếu tố của đối tượng. Câu trả lời chính xác. - Oskar Calvo
Nên là /index.php thay vì index.php cho tên đường dẫn. - Andrea
1 jQuery là mã chất lượng tốt nhất từ ​​trước đến nay, nếu bạn không sử dụng nó như một thằng ngốc. jQuery chắc chắn là con đường để đi. </ mỉa mai> - Oriol
Cá nhân, tôi tin rằng đây là câu trả lời hay nhất. Tất nhiên Javascript cố gắng tốt nhất của nó, nhưng jQuery tốt hơn giải quyết các trường hợp cạnh hơn, đó là lý do tại sao jQuery vẫn còn rất phổ biến ngày hôm nay, nó tốt hơn con số ra sự không tương thích. Theo giả thuyết, năm tới một số trình duyệt mới không sử dụng window.location một cách chính xác, và trong trường hợp đó tiền của tôi sẽ là trên jQuery. Có, Javascript đã được cải thiện từ năm 1994, nhưng bây giờ bạn có điện thoại thông minh, máy tính bảng, rất nhiều trình duyệt, nhiều trường hợp cạnh hơn. Thật buồn cười khi nghe các nhà phát triển mới gọi jQuery là "cách cũ", nhưng sau đó mã Javascript thuần túy của họ bị phá vỡ trong trình duyệt trên thiết bị di động. - PJ Brunet
Theo bugs.jquery.com/ticket/7858 điều này chỉ hoạt động một cách tình cờ. Cũng thế, attr được cho là chỉ được sử dụng trên các đối tượng DOM, cho những thứ có thể được thiết lập bằng cách sử dụng các thuộc tính HTML. - MauganRa


Nếu bạn cần tham số băm có trong URL, window.location.href có thể là một lựa chọn tốt hơn.

window.location.pathname
=> /search

window.location.href 
 => www.website.com/search#race_type=1

57
2018-05-09 16:39



Nếu ai đó chỉ cần thẻ băm hơn có thể gọi window.location.href - Amit Patel
Tôi nghĩ @AmitPatel có nghĩa là window.location.hash - ptim


Bạn sẽ muốn sử dụng JavaScript được tích hợp sẵn window.location vật.


45
2018-01-02 06:50



điều này sẽ không trả lại các mục sau '?' ở vị trí. - Majid
@majidgeek hoạt động với tôi trong Firefox, Chrome và IE. Bạn có thể cung cấp một trường hợp kiểm tra phá vỡ này? - Barney
có thể xác nhận ít nhất trong bảng điều khiển window.location.pathname không lấy lại bất cứ thứ gì sau ? - worc


Chỉ cần thêm hàm này vào JavaScript và nó sẽ trả về đường dẫn tuyệt đối của đường dẫn hiện tại.

function getAbsolutePath() {
    var loc = window.location;
    var pathName = loc.pathname.substring(0, loc.pathname.lastIndexOf('/') + 1);
    return loc.href.substring(0, loc.href.length - ((loc.pathname + loc.search + loc.hash).length - pathName.length));
}

Tôi hy vọng nó làm việc cho bạn.


36
2018-05-19 09:12



Điều này đã giúp ích rất nhiều cho một tập lệnh mà tôi lười biếng có một số URL cơ sở được mã hóa cứng. Tôi không muốn có dấu '/' trên thư mục gốc và chèn nó vào đường dẫn, vì vậy tôi vừa tạo dòng thứ hai var pathName = loc.pathname.substring(0, loc.pathname.lastIndexOf('/')); - cogdog


window.location là một đối tượng trong javascript. nó trả về dữ liệu sau

window.location.host          #returns host
window.location.hostname      #returns hostname
window.location.path          #return path
window.location.href          #returns full current url
window.location.port          #returns the port
window.location.protocol      #returns the protocol

trong jquery bạn có thể sử dụng

$(location).attr('host');        #returns host
$(location).attr('hostname');    #returns hostname
$(location).attr('path');        #returns path
$(location).attr('href');        #returns href
$(location).attr('port');        #returns port
$(location).attr('protocol');    #returns protocol

29
2018-04-06 09:54



Mặc dù windows.location là loại funny, nó phải là window.location. - some-non-descript-user