Как получить привязку от URL с помощью jQuery? - PullRequest
168 голосов
/ 24 августа 2010

У меня есть URL, похожий на:

www.example.com/task1/1.3.html#a_1

Как получить значение привязки a_1 с помощью jQuery и сохранить его как переменную?

Ответы [ 6 ]

465 голосов
/ 09 апреля 2012

Для текущего окна , вы можете использовать это:

var hash = window.location.hash.substr(1);

Чтобы получить значение хеша главного окна , используйте это:

var hash = window.top.location.hash.substr(1);

Если у вас есть строка с URL / хэшем, самый простой способ:

var url = 'https://www.stackoverflow.com/questions/123/abc#10076097';
var hash = url.split('#').pop();

Если вы используете jQuery, используйте это:

var hash = $(location).attr('hash');
198 голосов
/ 24 августа 2010

Вы можете использовать .indexOf() и .substring(), например:

var url = "www.aaa.com/task1/1.3.html#a_1";
var hash = url.substring(url.indexOf("#")+1);

Вы можете попробовать его здесь , если в нем может не быть #, выполните проверку if(url.indexOf("#") != -1) следующим образом:

var url = "www.aaa.com/task1/1.3.html#a_1", idx = url.indexOf("#")
var hash = idx != -1 ? url.substring(idx+1) : "";

Если это текущий URL-адрес страницы, вы можете просто использовать window.location.hash, чтобы получить его, и заменить #, если хотите.

64 голосов
/ 24 сентября 2013

Используйте

window.location.hash

, чтобы получить все что угодно, включая #

36 голосов
/ 01 апреля 2014

JQuery стиль:

$(location).attr('hash');
9 голосов
/ 07 июня 2013

Вы можете использовать следующий «трюк» для анализа любого действительного URL. Используется специальное свойство href элемента привязки , hash.

С помощью jQuery

function getHashFromUrl(url){
    return $("<a />").attr("href", url)[0].hash.replace(/^#/, "");
}
getHashFromUrl("www.example.com/task1/1.3.html#a_1"); // a_1

С простой JS

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
3 голосов
/ 25 августа 2016

Если у вас есть просто строка URL-адреса (и, следовательно, нет атрибута хеша), вы также можете использовать регулярное выражение:

var url = "www.example.com/task1/1.3.html#a_1"  
var anchor = url.match(/#(.*)/)[1] 
...