web-dev-qa-db-fra.com

Comment obtenir l'ancre à partir de l'URL en utilisant jQuery?

J'ai une URL qui ressemble à:

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

Comment obtenir la valeur d'ancrage a_1 à l'aide de jQuery et la stocker en tant que variable?

170
zjm1126

Vous pouvez utiliser les .indexOf() et .substring() , comme ceci:

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

Vous pouvez l'essayer ici , s'il ne contient pas de #, faites une vérification if(url.indexOf("#") != -1) comme ceci:

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

S'il s'agit de l'URL actuelle de la page , vous pouvez simplement utiliser window.location.hash pour l'obtenir et remplacer le # si vous le souhaitez. .

199
Nick Craver

Pour fenêtre actuelle, vous pouvez utiliser ceci:

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

Pour obtenir la valeur de hachage de la fenêtre principale, utilisez ceci:

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

Si vous avez une chaîne avec une URL/hash, la méthode la plus simple est:

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

Si vous utilisez jQuery, utilisez ceci:

var hash = $(location).attr('hash');
471
Silvio Delgado

Utilisation

window.location.hash

pour récupérer tout au-delà, y compris le #

65
Real

style jQuery:

$(location).attr('hash');
36
Valentin E

Vous pouvez utiliser le "truc" suivant pour analyser toute adresse URL valide . Il tire parti de la propriété spéciale liée à href de élément d'ancrage , hash.

Avec jQuery

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

Avec plaine 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
9
David Murdoch

Si vous avez juste une chaîne d'URL ordinaire (et donc pas d'attribut de hachage), vous pouvez également utiliser une expression régulière:

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