Как обнаружить изменения URL с помощью jQuery - PullRequest
28 голосов
/ 21 ноября 2011

Как jQuery может обнаружить изменения в URL-адресе?

Например: если пользователь заходит на страницу, site.com/faq/ ничего не показывает, но если он переходит на site.com/faq/#open, jquery обнаруживает его и что-то делает.

Ответы [ 5 ]

25 голосов
/ 26 февраля 2014

Попробуйте

$(window).on('hashchange', function(e){
 // Your Code goes here
});

Это работает для меня

22 голосов
/ 21 ноября 2011

Вы можете использовать событие hashchange .

function hashchanged(){
  var hash = location.hash.replace( /^#/, '' );
 //your code
}

window.addEventListener("hashchange", hashchanged, false);

или встроенный плагин jquery hashchange

$(function(){

  // Bind the event.
  $(window).hashchange(hashchanged);

  // Trigger the event (useful on page load).
  hashchanged();

});

function hashchanged(){
 var hash = location.hash.replace( /^#/, '' );
 //your code
}
7 голосов
/ 21 ноября 2011

Просто посмотрите на window.location.hash при загрузке страницы:

$(document).ready(function() {
    if(window.location.hash === "open")
    {
        //Show something
    }
});

Или привяжите к событию hashchange окна:

$(document).ready(function() {
    $(window).hashchange(hashchanged);
});

function hashchanged()
{
    //Show something
}
2 голосов
/ 21 ноября 2011

Попробуйте это:

if (window.location.hash) {
    // Fragment exists, do something with it
    var fragment = window.location.hash;
}

Просто для справки, часть URL, указанная в #, называется «фрагментом»

1 голос
/ 21 ноября 2011

Если у вас есть URL site.com/faq/#open, тогда вы можете сделать

var hash = window.location.hash

, чтобы получить hash = 'open'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...