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.

1645voto

Gareth Punkte 123487

Einfache Verwendung von Standort-Hash :

if(window.location.hash) {
  // Fragment exists
} else {
  // Fragment doesn't exist
}

51 Stimmen

Zusätzlich: das .location-Objekt ist nur für die URL des aktuellen Fensters verfügbar, für eine beliebige URL (z.B. eine in einer String-Variable gespeicherte) ist dies nicht möglich

74 Stimmen

Außerdem sind Standorteigenschaften wie .hash und .query auch für <a>-Elemente verfügbar.

22 Stimmen

.search ist verfügbar auf einer <a> , nicht .query . Beispiel jQuery: $("<a/>").attr({ "href": "http://www.somewhere.com/a/b/c.html?qs=1#fragmenttest" })[0] . .hash => "#fragmenttest" y .search = ?qs=1 . Von dort aus besuchen Sie die Frage zur Extraktion von Querystrings um etwas anderes als eine Zeichenkette zu erhalten.

395voto

Mark Notton Punkte 4654
  if(window.location.hash) {
      var hash = window.location.hash.substring(1); //Puts hash in variable, and removes the # character
      alert (hash);
      // hash found
  } else {
      // No hash found
  }

58voto

José Leal Punkte 7777

Geben Sie Folgendes an:

<script type="text/javascript">
    if (location.href.indexOf("#") != -1) {
        // Your code in here accessing the string like this
        // location.href.substr(location.href.indexOf("#"))
    }
</script>

45voto

Marc Diethelm Punkte 1152

Wenn der URI nicht der Speicherort des Dokuments ist, tut dieses Snippet, was Sie wollen.

var url = 'example.com/page.html#anchor',
    hash = url.split('#')[1];

if (hash) {
    alert(hash)
} else {
    // do something else
}

30voto

Jon Skeet Punkte 1325502

Haben Sie das schon ausprobiert?

if (url.indexOf('#') !== -1) {
    // Url contains a #
}

(Wo url ist natürlich die URL, die Sie überprüfen möchten).

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