JQuery kullanarak URL'den çapa nasıl alınır?


184

Şuna benzer bir URL var:

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

a_1JQuery kullanarak bağlantı değerini nasıl alabilirim ve bir değişken olarak nasıl depolayabilirim?

Yanıtlar:


207

Sen kullanabilirsiniz .indexOf()ve .substring()bu gibi:

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

Burada deneyebilirsiniz , içinde olmayabilirse #, böyle bir if(url.indexOf("#") != -1)kontrol yapın:

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

Bu geçerli sayfa URL'siyse, bunu window.location.hashalmak için kullanabilirsiniz ve #isterseniz değiştirin .


10
Lütfen dikkat: ana pencerenin karma değerini bir iFrame içinden almak için window.top.location.hashbunun yerine kullanmanız gerekir .
Paolo Stefan

1
url.split("#").pop() - Daha yavaş ama daha kolay.
Ifch0o1

490

İçin geçerli pencerenin , bu kullanabilirsiniz:

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

Ana pencerenin karma değerini almak için şunu kullanın:

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

URL / karma içeren bir dizeniz varsa, en kolay yöntem:

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

JQuery kullanıyorsanız, bunu kullanın:

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

1
Zarif cevap. Bunun işe yaramadığı durumlar var mı?
sscirrus

2
kısayol sürümü - var hash = window.location.hash.substr(1);bir JS nedeniyle hem substr / substring işlevleri vardır, bunlar farklıdır, ancak bu durumda aynıdır.
Arthur Kushman

bunun değişimlerini takip etmenin en iyi yolu nedir, yani. birisi iç sayfa bağlantısını tıkladı mı?
Iculous'u

5
@RidIculous şunu deneyin: $ (window) .on ('hashchange', function () {$ ('h1'). Metin (location.hash.slice (1));});
Silvio Delgado

71

kullanım

window.location.hash

# ve ötesindeki her şeyi almak için


15
location.hash.slice(1)Son dizede karma etiketini istemiyorsanız kullanmayı unutmayın !
Sandy Gifford

39

jQuery tarzı:

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

7
her javascript sorununun jquery ile çözülmesi gerekmez.
Aralık'ta doxin

22
@doxin Kabul ediyorum ama soru "jQuery kullanarak URL'den çapa nasıl alınır?"
Valentin E

10

Geçerli herhangi bir URL'yi ayrıştırmak için aşağıdaki "hileyi" kullanabilirsiniz . Bu yararlanır çapa eleman 'ın özel href-ilişkili mülkiyet, hash.

JQuery ile

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

Düz JS ile

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

Yalnızca düz bir URL dizeniz varsa (ve bu nedenle bir hash özniteliğiniz yoksa) normal bir ifade de kullanabilirsiniz:

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

1
Eşleşmenin ikinci öğeye erişmeden önce sonuç aldığını kontrol etmeniz gerekiyor, yoksa url'de bağlantı yoksa bu kod hata verecektir.
Richard Garside
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.