How can you check for a #hash in a URL using JavaScript?

How can you check for a #hash in a URL using JavaScript?

I have some jQuery/JavaScript code that I want to run only when there is a hash (#) anchor link in a URL. How can you check for this character using JavaScript? I need a simple catch-all test that would detect URLs like these:

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

Basically something along the lines of:
if (thereIsAHashInTheUrl) {
do this;
} else {
do this;
}

If anyone could point me in the right direction, that would be much appreciated.

Solutions/Answers:

Solution 1:

Simple:

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

Solution 2:

  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
  }

Solution 3:

Put the following:

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

Solution 4:

If the URI is not the document’s location this snippet will do what you want.

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

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

Solution 5:

Have you tried this?

if (url.indexOf("#") != -1)
{
}

(Where url is the URL you want to check, obviously.)

Solution 6:

$('#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!
});

This will solve the problem 😉