Câu trả lời:
Bạn có thể sử dụng .indexOf()
và .substring()
, như thế này:
var url = "www.aaa.com/task1/1.3.html#a_1";
var hash = url.substring(url.indexOf("#")+1);
Bạn có thể thử nó ở đây , nếu nó có thể không có #
trong đó, if(url.indexOf("#") != -1)
hãy kiểm tra như thế này:
var url = "www.aaa.com/task1/1.3.html#a_1", idx = url.indexOf("#");
var hash = idx != -1 ? url.substring(idx+1) : "";
Nếu đây là URL trang hiện tại , bạn chỉ có thể sử dụng window.location.hash
để lấy nó và thay thế #
nếu bạn muốn.
url.split("#").pop()
- Chậm hơn nhưng dễ hơn.
Đối với cửa sổ hiện tại , bạn có thể sử dụng điều này:
var hash = window.location.hash.substr(1);
Để lấy giá trị băm của cửa sổ chính , hãy sử dụng:
var hash = window.top.location.hash.substr(1);
Nếu bạn có một chuỗi có URL / hàm băm, phương pháp đơn giản nhất là:
var url = 'https://www.stackoverflow.com/questions/123/abc#10076097';
var hash = url.split('#').pop();
Nếu bạn đang sử dụng jQuery, hãy sử dụng điều này:
var hash = $(location).attr('hash');
var hash = window.location.hash.substr(1);
do một JS có cả hai hàm cơ sở / chuỗi con, chúng khác nhau, nhưng trong trường hợp này là như nhau.
Sử dụng
window.location.hash
để lấy lại mọi thứ bên ngoài và bao gồm cả #
location.hash.slice(1)
nếu bạn không muốn thẻ băm trong chuỗi cuối cùng!
Kiểu jQuery:
$(location).attr('hash');
Bạn có thể sử dụng "mẹo" sau để phân tích bất kỳ URL hợp lệ nào . Nó tận dụng lợi thế của thuộc tính đặc biệt liên quan đến phần tử neo , hash
.
function getHashFromUrl(url){
return $("<a />").attr("href", url)[0].hash.replace(/^#/, "");
}
getHashFromUrl("www.example.com/task1/1.3.html#a_1"); // a_1
function getHashFromUrl(url){
var a = document.createElement("a");
a.href = url;
return a.hash.replace(/^#/, "");
};
getHashFromUrl("www.example.com/task1/1.3.html#a_1"); // a_1
Nếu bạn chỉ có một chuỗi url đơn giản (và do đó không có thuộc tính băm), bạn cũng có thể sử dụng biểu thức chính quy:
var url = "www.example.com/task1/1.3.html#a_1"
var anchor = url.match(/#(.*)/)[1]
window.top.location.hash
thay thế.