我有一个包含两篇文章的网页。加载此页面时,jQuery用于隐藏这两篇文章并向下滑动第一篇文章。用户可以单击导航选项卡查看第二篇文章。然后使用onhashchange事件单击back按钮返回到第一篇文章。以下是我的HTML代码:

<nav>
 <a href='#1'>Article 1</a>
 <a href='#2'>Article 2</a>
</nav>

<article id=1>
 The first article.
</article>

<article id=2>
 The second article.
</article>

下面是javascript代码:
function change(hash)
{
 $('article:visible').slideUp();
 if(hash != '')
 {
  $(hash).slideDown();
 }
 else
 {
  $('article').first().slideDown();
 }
}

$('nav a').click(function(){
 var id = $(this).attr('href');
 change(id);
});

$('article').hide();
change(location.hash);
window.onhashchange = change(location.hash);

所观察到的是,尽管单击了后退按钮,页面仍保留在第二篇文章中。我正在使用火狐12.0浏览器,不知道是什么原因导致它无法工作。如有任何帮助,我们将不胜感激。谢谢。

最佳答案

您可能想尝试:

window.onhashchange = change;

//and read location.hash in the change function instead
function change(){
    var hash = location.hash;
    ...
}


window.onhashchange = function(){
    change(location.hash);
}

window.onhashchange = change(location.hash);

如果我的JS没有生锈,这就失败了,因为
呼叫change()
没有返回值的函数undefined
您将undefined分配给window.onhashchange-这是错误的,因为您应该将function分配给事件。

关于javascript - 窗口onhashchange不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10577642/

10-09 19:31