JavaScript函数,如果url有哈希标记,用户刚刚使用浏览器向前或向后导航?

时间:2012-03-20 17:44:05

标签: javascript jquery browser navigation

如果哈希标记以twoB结尾,则在刷新页面时会触发以下警告:

if (window.location.href.match(/\#twoB/))
{
   alert('twoB');
}

问题在于,如果您点击了几个哈希标签,然后在浏览器中单击后退,虽然URL包含哈希,但警报不会触发。在用户使用浏览器返回或转发后,如何激活(理想情况下)代码。

我正在为这个项目使用jQuery,所以如果语法更容易,我想在理想的世界中使用jQuery解决方案。

3 个答案:

答案 0 :(得分:3)

$(window).on("hashchange", function () {
    console.log("hash is now " + window.location.hash);
});

请注意,jQuery 1.7中添加了on;如果您使用的是旧版本,请改为$(window).bind

答案 1 :(得分:0)

最初我解决了这个使用setInterval重复检查URL的丑陋方式。 HTML5s onpopstate在首次加载页面时运行,然后是每个前进和后退导航。

window.onpopstate = function(){ 
  if (window.location.href.match(/\#twoB/))
  {
     alert('twoB');
  }
}

答案 2 :(得分:0)

为什么不使用location.hash而不是href.match? location.hash应该更快,因为你只获得哈希并且你不必进行匹配?