Jak uzyskać kotwicę z adresu URL za pomocą jQuery?


184

Mam adres URL podobny do:

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

Jak mogę uzyskać a_1wartość zakotwiczenia za pomocą jQuery i zapisać ją jako zmienną?

Odpowiedzi:


207

Możesz użyć .indexOf()i .substring(), w ten sposób:

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

Możesz spróbować tutaj , jeśli nie ma #w nim, wykonaj następujące czynności if(url.indexOf("#") != -1)kontrolne:

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

Jeśli jest to bieżący adres URL strony, możesz go użyć window.location.hashi zastąpić go, #jeśli chcesz.


10
Uwaga: aby uzyskać wartość skrótu głównego okna z ramki iFrame, należy użyć window.top.location.hashzamiast tego.
Paolo Stefan,

1
url.split("#").pop() - Wolniej, ale łatwiej.
Ifch0o1

490

W bieżącym oknie możesz użyć tego:

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

Aby uzyskać wartość skrótu głównego okna , użyj tego:

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

Jeśli masz ciąg znaków z adresem URL / skrótem, najprostszą metodą jest:

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

Jeśli używasz jQuery, użyj tego:

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

1
Elegancka odpowiedź. Czy są jakieś przypadki, w których to nie działa?
sscirrus

2
wersja skrótu - var hash = window.location.hash.substr(1);ze względu na JS mają obie funkcje substr / substring, są one różne, ale w tym przypadku są takie same.
Arthur Kushman

jaki jest najlepszy sposób śledzenia zmian tego, tj. ktoś kliknął link do wewnętrznej strony?
Rid Iculous

5
@RidIculous spróbuj tego: $ (window) .on ('hashchange', function () {$ ('h1'). Text (location.hash.slice (1));});
Silvio Delgado,

71

Posługiwać się

window.location.hash

aby odzyskać wszystko poza tym #


15
Pamiętaj, aby użyć, location.hash.slice(1)jeśli nie chcesz, aby hash tag w końcowym ciągu!
Sandy Gifford,

39

Styl jQuery:

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

7
nie każdy problem z javascript musi być rozwiązany za pomocą jquery.
doxin

22
@doxin Zgadzam się, ale pytanie brzmi: „Jak uzyskać kotwicę z adresu URL za pomocą jQuery?”
Valentin E

10

Aby przeanalizować dowolny prawidłowy adres URL, możesz użyć następującej „sztuczki” . Zajmuje zaletą elementu kotwica specjalnej własności związane href „s, hash.

Z jQuery

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

Ze zwykłym 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

Jeśli masz zwykły ciąg adresu URL (a zatem nie masz atrybutu skrótu), możesz również użyć wyrażenia regularnego:

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

1
Musisz sprawdzić, czy dopasowanie uzyskuje wyniki przed uzyskaniem dostępu do drugiego jego elementu, w przeciwnym razie kod będzie błąd, jeśli adres URL nie ma kotwicy.
Richard Garside,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.