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 = 
cppit
sumber
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);
Musa
sumber
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

Ahsan Khurshid
sumber
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

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

Gunakan JavaScript berikut untuk mendapatkan nilai setelah hash (#) dari URL. Anda tidak perlu menggunakan jQuery untuk itu.

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

Saya sudah mendapat kode dan tutorial ini dari sini - Cara mendapatkan nilai hash dari URL menggunakan JavaScript

JoyGuru
sumber
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

Manohar Reddy Poreddy
sumber
6

Sangat mudah. Coba kode di bawah ini

$(document).ready(function(){
  var hashValue = location.hash.replace(/^#/, '');  
  //do something with the value here  
});
kmario23
sumber
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);
Ro Hit
sumber