javascript - Kako dobiti anker iz URL-a koristeći jQuery?


Imam URL koji izgleda ovako:

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

Kako mogu dobiti vrijednost a_1 sidra koristeći jQuery i pohraniti je kao varijablu?

Odgovor #1

Za trenutni prozor, možete koristiti ovo:

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

Za dobivanje hash vrijednosti glavnog prozora, koristite ovo:

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

Ako imate string s URL-om/hashem, najlakši način je:

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

Ako koristite jQuery, upotrijebite ovo:

var hash = $(location).attr('hash');

Odgovor #2

Možete koristiti .indexOf() i .substring(), ovako:

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

Možete to pokušati ovdje, ako možda nema # u njemu, napravite provjeru if(url.indexOf("#") != -1) ovako:

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

Ako je ovo URL trenutne stranice, možete jednostavno koristiti window.location.hash da ga dobijete i zamijeniti # ako želite.

Odgovor #3

Koristi

window.location.hash

dohvatiti sve što je iznad i uključujući #

Odgovor #4

jQuery stil:

$(location).attr('hash');

Odgovor #5

Možete koristiti sljedeći "trik" za parsiranje bilo kojeg važećeg URL-a. Iskorištava posebnu svojstvo href elementa ankera, hash.

S jQuery

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

S čistim JS-om

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

Povezani članci