Как выполнить функцию js на основе url-хэша url # nameoffunction - PullRequest
9 голосов
/ 20 мая 2011

Я видел, что некоторые веб-сайты выполняют функцию JavaScript, основанную на URL-адресе.Например,

, когда я получаю доступ к http://domain.com/jobs#test

, тогда веб-сайт выполняет функцию, основанную на # test

. Я могу это сделать, проверив location.href, но есть лилучший способ?

Ответы [ 5 ]

10 голосов
/ 20 мая 2011

Вот что я делаю:

window.onload = function(){
    var hash = (window.location.hash).replace('#', '');
    if (hash.length == 0) {
        //no hash do something
    }
    else {
        //else do something with hash
    }
}

демо: http://jsfiddle.net/maniator/XCjpy/show/#test
демо2: http://jsfiddle.net/maniator/XCjpy/show/
демо3: http://jsfiddle.net/maniator/XCjpy/show/#testing_again

3 голосов
/ 20 мая 2011

Если вам не нужно поддерживать старые браузеры, такие как IE6 и IE7, вы можете использовать:

window.onhashchange = function(){
  switch(location.hash) {
    case '#hash1':
      //do something
    break;
    case '#has2':
      //do something else
    break;
  }
}

Но если вам нужно поддерживать старые браузеры, вам нужно опросить:

var oldHash = location.hash;
setInterval(function(){
  if(location.hash !== oldHash){
    oldHash = location.hash;
    //hash changed do something
  }
}, 120);
2 голосов
/ 20 мая 2011

Демо-версия

$(window).bind('hashchange', function() {
    var hash = document.location.hash;
    var func = hash.replace('#', '');
    eval(func + '()');
});

function asdf() {
    alert('asdf function');
}

function qwerty() {
    alert('qwerty function');
}

Примечание: eval() опасно.Вы должны создать предопределенный массив безопасных функций и вызывать их.

1 голос
/ 20 мая 2011

Посмотрите на Это .Смотрите таблицу свойств.location.hash должен помочь вам.

0 голосов
/ 20 мая 2011

Вы можете использовать библиотеку, такую ​​как YUI, чтобы сделать это более элегантно, взгляните на YUI Browser History Manager

http://developer.yahoo.com/yui/history/

...