929 Stimmen

Wie kann man mit JavaScript nach einem #hash in einer URL suchen?

Ich habe einige jQuery/JavaScript-Code, den ich nur ausführen möchte, wenn es eine Raute ( # ) Anker-Link in einer URL. Wie kann man mit JavaScript auf dieses Zeichen prüfen? Ich brauche einen einfachen Catch-All-Test, der URLs wie diese erkennen würde:

  • example.com/page.html#anchor
  • example.com/page.html#anotheranchor

Im Grunde genommen etwas in der Art von:

if (thereIsAHashInTheUrl) {        
    do this;
} else {
    do this;
}

Wenn mir jemand den richtigen Weg weisen könnte, wäre ich sehr dankbar.

19voto

Oral ÜNAL Punkte 350
$('#myanchor').click(function(){
    window.location.hash = "myanchor"; //set hash
    return false; //disables browser anchor jump behavior
});
$(window).bind('hashchange', function () { //detect hash change
    var hash = window.location.hash.slice(1); //hash to string (= "myanchor")
    //do sth here, hell yeah!
});

Das wird das Problem lösen ;)

17voto

user2327502 Punkte 161
window.location.hash 

gibt den Hash-Bezeichner zurück

10voto

BaronVonKaneHoffen Punkte 1695

...oder es gibt einen Jquery-Selektor:

$('a[href^="#"]')

7voto

Fusion Punkte 4329

Sie können Urls parsen mit modernes JS :

var my_url = new URL('http://www.google.sk/foo?boo=123#baz');

my_url.hash; // outputs "#baz"
my_url.pathname; // outputs "/moo"
my_url.protocol; // "http:"
my_url.search; // outputs "?doo=123"

Urls ohne Hash geben einen leeren String zurück.

6voto

Emmanuel Punkte 4663

So können Sie in regelmäßigen Abständen prüfen, ob sich der Hash-Wert ändert, und dann eine Funktion aufrufen, um den Hash-Wert zu verarbeiten.

var hash = false; 
checkHash();

function checkHash(){ 
    if(window.location.hash != hash) { 
        hash = window.location.hash; 
        processHash(hash); 
    } t=setTimeout("checkHash()",400); 
}

function processHash(hash){
    alert(hash);
}

13 Stimmen

Das ist nur bei 6 + 7 notwendig. Alle anderen Browser haben die onhashchange Ereignis enthalten

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X