Bir URL'den parça tanımlayıcısını (karma # öğesinden sonraki değer) nasıl alabilirim?


212

Misal:

www.site.com/index.php#hello

JQuery kullanarak, hellobir değişkene değer koymak istiyorum :

var type = 

Bu sorunun jQuery olarak etiketlenip etiketlenmediği ve sorulması gerekip gerekmediğinden emin değilim. Cevapların çoğu jQuery olmadan JS için geçerlidir ve bu iyi bir dupe hedefi gibi görünüyor.
user4642212

Yanıtlar:


585

JQuery'ye gerek yok

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

154
Yeterli jQuery! (Şaka yapıyorum: +1.)
nnnnnn

2
Ben sadece bir # JavaScript 'tanımlayıcı / anahtar kelime olarak çalışan' karma 'olarak kullanılabilir öğrendim. Harika
Clain Dsilva

13
Gerçek hayatta hiçbir fark yaratmasa da, performansta mütevazı bir artış sunması .slice(1)yerine kullanabilirsiniz .substr(1).
devius

3
Aman Tanrım, HİÇ farkedilir bir fark yaratmak için url karmasını kaç kez kontrol etmeniz gerekir? Bir milyon? 'Mütevazı artış' bu bağlamda büyük bir abartıdır. :-)
konrad

37

Aşağıdaki kodu kullanarak yapabilirsiniz:

var url = "www.site.com/index.php#hello";
var hash = url.substring(url.indexOf('#')+1);
alert(hash);

DEMO'YU GÖR


4
Not: indexOf IE8 tarafından desteklenmemektedir
Sebastiaan Ordelman

4
@SchalkKeun neyse ki, şimdi '18'de neredeyse bitti. Ama hala bu efsaneyle uğraşmak zorunda olanlar için bunun farkında olmalıdır.
Sebastiaan Ordelman

6
Dürüst olmak gerekirse, IE8 çok güvensiz, tüm ödeme ağ geçitleri temelde önümüzdeki hafta (30 Haziran 2018) TLS 1.2'yi desteklemeyen herhangi bir tarayıcıyı düşürecek, onlardan ödeme yapamayacaksınız. Bu, tüm bu eski crappy tarayıcıları herhangi bir e-ticaret istemcisi için işe yaramaz hale getirir.
Schalk Keun

13
var url ='www.site.com/index.php#hello';
var type = url.split('#');
var hash = '';
if(type.length > 1)
  hash = type[1];
alert(hash);

JSFiddle'da çalışma demosu


ifİfadesi için kısaltılabilir var hash = type[1] || "";.
user4642212


6

URL'yi çalışma süresinden aldım, aşağıda doğru cevabı verdim:

let url = "www.site.com/index.php#hello";
alert(url.split('#')[1]);

Bu yardımcı olur umarım


6

Bu çok kolay. Aşağıdaki kodu deneyin

$(document).ready(function(){
  var hashValue = location.hash.replace(/^#/, '');  
  //do something with the value here  
});

3
var hashValue = location.hash.replace (/ ^ # /, '');
flakerimi

3

AK'nin koduna dayanarak, bir Yardımcı İşlev. JS Fiddle Here ( http://jsfiddle.net/M5vsL/1/ ) ...

// Helper Method Defined Here.
(function (helper, $) {
    // This is now a utility function to "Get the Document Hash"
    helper.getDocumentHash = function (urlString) {
        var hashValue = "";

        if (urlString.indexOf('#') != -1) {
            hashValue = urlString.substring(parseInt(urlString.indexOf('#')) + 1);
        }
        return hashValue;
    };
})(this.helper = this.helper || {}, jQuery);
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.