Wie erhalte ich die Fragmentkennung (Wert nach Hash #) von einer URL?

211

Beispiel:

www.site.com/index.php#hello

Mit jQuery möchte ich den Wert helloin eine Variable einfügen:

var type = 
cppit
quelle
Ich bin mir nicht sicher, ob diese Frage weiterhin als jQuery markiert und danach gefragt werden soll. Die meisten Antworten gelten für JS ohne jQuery, und dies scheint ein gutes Ziel zu sein.
user4642212

Antworten:

585

Keine Notwendigkeit für jQuery

var type = window.location.hash.substr(1);
Musa
quelle
154
Nicht genug jQuery! (Nur ein Scherz: +1.)
nnnnnn
2
Ich habe gerade gelernt, dass ein # als 'Hash' verwendet werden kann, der als Bezeichner / Schlüsselwort in JavaScript fungiert. Ehrfürchtig
Clain Dsilva
13
Sie können auch verwenden, .slice(1)anstatt .substr(1)eine bescheidene Leistungssteigerung zu bieten, obwohl es im wirklichen Leben keinen Unterschied macht.
Devius
3
OMG, wie oft müssten Sie den URL-Hash überprüfen, um einen spürbaren Unterschied zu machen? Eine Million? "Bescheidener Anstieg" ist in diesem Zusammenhang eine enorme Übertreibung. :-)
Konrad
37

Sie können dies mit folgendem Code tun:

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

SIEHE DEMO

Ahsan Khurshid
quelle
4
Hinweis: indexOf wird von IE8 nicht unterstützt
Sebastiaan Ordelman
4
@SchalkKeun zum Glück, jetzt in '18 ist es fast weg. Aber für diejenigen, die sich noch mit dieser Legende auseinandersetzen müssen, sollte man sich dessen bewusst sein.
Sebastiaan Ordelman
6
Um ehrlich zu sein, IE8 ist so unsicher, dass alle Zahlungsgateways in der nächsten Woche (30. Juni 2018) jeden Browser löschen, der TLS 1.2 nicht unterstützt, sodass Sie überhaupt keine Zahlungen von ihnen ausführen können. Das macht all diese alten beschissenen Browser für jeden E-Commerce-Client unbrauchbar.
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);

Arbeitsdemo auf jsfiddle

Talha
quelle
Die ifAussage kann auf verkürzt werden var hash = type[1] || "";.
user4642212
7

Verwenden Sie das folgende JavaScript, um den Wert nach Hash (#) von einer URL abzurufen. Sie müssen dafür nicht jQuery verwenden.

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

Ich habe diesen Code und das Tutorial von hier - Wie man einen Hash-Wert von der URL mit JavaScript erhält

JoyGuru
quelle
6

Ich hatte die URL von der Laufzeit, unten gab die richtige Antwort:

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

hoffe das hilft

Manohar Reddy Poreddy
quelle
6

Es ist sehr leicht. Versuchen Sie den folgenden Code

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

Basierend auf dem AK-Code ist hier eine Hilfsfunktion. 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
quelle