если функция с помощью window.location.hash - PullRequest
5 голосов
/ 18 ноября 2010

У меня есть функция, которая изменяет хеш в URL и вставляет / удаляет div с моей главной страницы. Я сделал это для того, чтобы у меня была страница, по которой вы можете маневрировать без перезагрузки, но в то же время я хотел, чтобы люди могли добавить в закладки определенный раздел и перейти к нему позже, не просматривая страницу снова.

Когда я пытаюсь вызвать мою функцию hash(), которая закрывает все div и открывает конкретный div в зависимости от хэша, это не работает. Возможно, я не правильно понял в операторах if, потому что, когда я помещаю alert() в функцию hash(), он появляется так, как и предполагалось.

function hash(){
    if ( window.location.hash == "dcontact" ) { 
        removedivs();
        InsertContent('dcontact');
    }
    if ( window.location.hash == "dhome" ) {
       removedivs();
       InsertContent('dhome');
    }
}
hash();

Я знаю, что, возможно, есть лучшие способы сделать все, что я упомянул, но это единственный веб-сайт, который я собираюсь сделать, и мне было все равно, насколько беспорядочным будет сценарий, так как Пока это работает.

1 Ответ

7 голосов
/ 18 ноября 2010

причина, по которой он не работает - фактический хеш (в США, я думаю, вы называете его символом фунта) - # в начале window.location.hash

Из памяти IE не помещает хэш-символ, поэтому сделайте это:

function hash() {
    var hash = window.location.hash.replace('#','');

    if (hash == "dcontact"){removedivs(); InsertContent('dcontact');}
    if (hash == "dhome"){removedivs(); InsertContent('dhome');}  
}

Вы могли бы также рассмотреть просто вызов InsertContent (хеш) вместо выполнения if () для каждой отдельной ссылки, которую вы будете иметь

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