2013-02-26 3 views
0

Итак, на моем сайте выпадающие меню в заголовке, которые ссылаются на дочерние страницы разных страниц. Как и основные кнопки ссылки на about.php и ссылки меню при наведении курсора about.php#contacts и т.д. ...Проблема с хеш-ссылками, работающими с ссылками на javascript

Теперь на каждой из этих страниц, что дочерние страницы, они не являются отдельными, но страницы переключаются вкл/выкл с помощью яваскрипта функции для изменения отображение значения css.

Так что если я нахожусь в индексе и нажимаю на about.php#contacts, содержимое контактов отображается просто отлично. Однако, если я нахожусь на странице, любая ссылка с хешем, направляющая на страницу, не работает. На другие страницы это будет работать, но если хеш-ссылка указывает на текущую страницу, она не работает. В адресной строке изменяется URL-адрес, но я предполагаю, что страница или сценарий необходимо перезагрузить для отображения нового контента.

Вот соответствующий код, который я использую, есть ли лучший способ выполнить то, что я пытаюсь сделать?

//Drop down 
<ul><li><a href="about.php">About Us</a> 
<ul><li><a href="about.php#profile">contacts</a></li> 
//More.. 
</ul></li></ul> 

//Menu on the page 
<ul> 
<li><a href="javascript:showlayer('contacts');"><span>Contacts</span></a></li> 
//More 
</ul> 

//Javascript code that handles everything 
<script language="javascript"> 
var hash = window.location.hash; 
var selectedDiv = hash.split('#')[1]; 
if(selectedDiv != null) 
{ 
    showlayer(selectedDiv); 
} 
function showlayer(name){ 
    document.getElementById("contacts").style.display = "none"; 
    //More 
    document.getElementById(name).style.display = "block"; 
} 
</script> 

ответ

1

Щелчок по ссылке, указывающей на текущую страницу с другим хешем, не перезагрузит страницу.

Вместо этого вам нужно добавить обработчик для события hashchange и запустить там свой код.

Еще лучше, замените свой код на CSS :target.

+0

Спасибо, что hashchange работал. Я рассмотрю один из них. – gta0004

Смежные вопросы