Bagaimana cara mendapatkan pengidentifikasi fragmen (nilai setelah hash #) dari URL?


212

Contoh:

www.site.com/index.php#hello

Menggunakan jQuery, saya ingin memasukkan nilai hellodalam variabel:

var type = 

Saya tidak yakin, apakah pertanyaan ini harus tetap ditandai sebagai jQuery dan menanyakannya. Sebagian besar jawaban berlaku untuk JS tanpa jQuery dan ini sepertinya target dupe yang bagus.
user4642212

Jawaban:


585

Tidak perlu jQuery

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

154
Tidak cukup jQuery! (Just kidding: +1.)
nnnnnn

2
Saya baru mengetahui bahwa # dapat digunakan sebagai 'hash' yang berfungsi sebagai pengenal / kata kunci dalam JavaScript. Luar biasa
Clain Dsilva

13
Anda juga dapat menggunakan .slice(1)daripada .substr(1)yang seharusnya menawarkan peningkatan kinerja yang sederhana, meskipun itu tidak membuat perbedaan dalam kehidupan nyata.
devius

3
OMG, berapa kali Anda perlu memeriksa hash url untuk membuat perbedaan nyata APAPUN? Satu juta? 'Peningkatan sederhana' adalah pernyataan yang terlalu berlebihan dalam konteks ini. :-)
konrad

37

Anda dapat melakukannya dengan menggunakan kode berikut:

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

MELIHAT DEMO


4
Catatan: indexOf tidak didukung oleh IE8
Sebastiaan Ordelman

4
@SchalkKeun untungnya, sekarang di '18 sudah hampir habis. Tetapi bagi mereka yang masih harus berhadapan dengan legenda itu harus mewaspadai hal itu.
Sebastiaan Ordelman

6
Sejujurnya, IE8 sangat tidak aman, semua gateway pembayaran pada dasarnya akan menghapus browser yang tidak mendukung TLS 1.2 minggu depan (30 Juni 2018), Anda tidak akan dapat melakukan pembayaran sama sekali. Sehingga membuat semua browser jelek ini tidak berguna untuk klien e-commerce mana pun.
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);

Demo kerja di jsfiddle


The ifpernyataan dapat disingkat menjadi var hash = type[1] || "";.
user4642212


6

Saya mendapatkan URL dari run time, di bawah ini memberikan jawaban yang benar:

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

semoga ini membantu


6

Sangat mudah. Coba kode di bawah ini

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

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

3

Berdasarkan kode AK, di sini adalah Fungsi Helper. 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);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.