2012-07-04 41 views
5

Tôi đang tìm cách truy xuất phần #anchor từ URL hiện tại bằng JavaScript. Ví dụ:Lấy #id từ URL hiện tại

http://my-page.com/index.html#contact-us

Would return contact-us.

Tôi có thể chia URI tại cuối cùng # và sau đó lấy phần cuối cùng, nhưng tôi đang tìm kiếm một đề xuất khá đẹp và sạch hơn. Một hàm gốc (jQuery?) Sẽ rất tuyệt, nhưng tôi đoán tôi đang yêu cầu quá nhiều.

Trả lời

11

Sử dụng location.hash:

location.hash.slice(1); 

Nó bắt đầu với một #, do đó .slice(1). Với một chuỗi tùy ý, bạn có thể sử dụng tính năng URL-phân tích cú pháp tích hợp bằng cách tạo ra một yếu tố <a>, và thiết lập các href, sau đó đọc các tài sản khác, chẳng hạn như , hostname, hash vv jQuery dụ:

$('a').attr('href', url)[0].hash; 
+2

Cả 'splice' cũng không' slice' là một phần của 'String.prototype'. 'location.hash.substr (1)' sẽ thực hiện thủ thuật. – lonesomeday

+0

@lonesomeday Cảm ơn, là lỗi đánh máy trong mã. Lời giải thích đã sử dụng ký tự chính xác. EDIT: ['String.prototype.slice'] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/slice) trên MDN. –

+1

'slice', tất nhiên, là một phần của' String.prototype'. Xin lỗi cho sự ngu ngốc của tôi. – lonesomeday

2

location.hash.replace(/^#/, "")

1

Nếu bạn làm việc với một biến:

var url = "http://my-page.com/index.html#contact-us"; 

var hash = url.substring(url.indexOf("#") + 1); 
Các vấn đề liên quan