2010-04-19 38 views
18

Tôi biết tôi có thể sử dụng window.location.pathname để trả lại url, nhưng làm cách nào để phân tích cú pháp url?jquery - nhận đường dẫn url?

Tôi có url như sau: http://localhost/messages/mine/9889 và tôi đang cố kiểm tra xem liệu "của tôi" có tồn tại trong url đó không?

Vì vậy, nếu "tôi" là phần thứ hai trong url đó, tôi muốn viết một câu lệnh if trên cơ sở đó ...

if(second argument == 'mine') { do something } 

Trả lời

44
if (location.pathname.split("/")[2] == "mine") { do something } 

Mặc dù nó sẽ rõ ràng là tốt hơn để kiểm tra xem có đủ các mặt hàng trong mảng đó là trả về bởi split:

var a = location.pathname.split("/"); 
if (a.length > 2 && a[2] == "mine") { do something } 

Lưu ý rằng mặc dù các chỉ số mảng là không dựa, chúng ta muốn xác định 2 là chỉ số để có được những gì bạn tham khảo như là đối số thứ 2 là chia sp Lits "/ tin nhắn/tôi/9889" vào một mảng của 4 hạng mục:

["", "messages", "mine", "9889"] 
+1

Thật sự thích sự đơn giản về điều này. Để loại bỏ bất kỳ phần tử trống nào và có một mảng tốt đẹp của các đường dẫn, hãy sử dụng: 'var locationPaths = location.pathname.split ("/"). Filter (function (n) {return n! = ''});' – jnpWebDeveloper

5
if (window.location.pathname.split("/")[2] == "mine") { 
    // it exists 
}; 

window.location.pathname là một chuỗi vào cuối ngày, vì vậy thông thường string methods áp dụng.

8

nếu jquery là một lựa chọn , bạn có thể làm như sau:

$.inArray("mine", window.location.pathname.split("/")) 
+0

Lưu ý rằng điều này sẽ khớp với _any_ 'mine', không chỉ ở phần thứ hai của URL. –

1

Mặc dù đây là truy vấn rất cũ .. nó bật lên trong một số tìm kiếm. Vì vậy, để thêm ghi chú của tôi .. trên đây

url.indexOf('mine') !== -1 

Trên đây nên được sử dụng cho việc kiểm tra để tìm nếu url có một chuỗi ... nơi như để tìm ra con đường, nó sẽ là tốt hơn để sử dụng

var a = document.createElement('a'); 
 
a.href = url; 
 
console.log(a.pathname); 
 
// if url='http://localhost/messages/mine/9889' 
 
// output will be /messages/mine/9889

hy vọng điều này sẽ tiết kiệm được một số những người thời gian

Các vấn đề liên quan