Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
若url有散列标签,并且用户刚刚使用浏览器向前或向后导航,那个么JavaScript函数是否有效?_Javascript_Jquery_Browser_Navigation - Fatal编程技术网

若url有散列标签,并且用户刚刚使用浏览器向前或向后导航,那个么JavaScript函数是否有效?

若url有散列标签,并且用户刚刚使用浏览器向前或向后导航,那个么JavaScript函数是否有效?,javascript,jquery,browser,navigation,Javascript,Jquery,Browser,Navigation,如果哈希标记以twoB结尾,则刷新页面时,以下内容将触发警报: if (window.location.href.match(/\#twoB/)) { alert('twoB'); } 问题是,如果您单击了一些哈希标记,然后在浏览器中单击“上一步”,尽管URL中包含哈希,但不会触发警报。如何在用户使用浏览器返回或前进后激发代码(理想情况下仅此) 我在这个项目中使用jQuery,所以如果语法更简单的话,我希望在理想的环境中使用jQuery解决方案 $(window).on("hashcha

如果哈希标记以
twoB
结尾,则刷新页面时,以下内容将触发警报:

if (window.location.href.match(/\#twoB/))
{
   alert('twoB');
}
问题是,如果您单击了一些哈希标记,然后在浏览器中单击“上一步”,尽管URL中包含哈希,但不会触发警报。如何在用户使用浏览器返回或前进后激发代码(理想情况下仅此)

我在这个项目中使用jQuery,所以如果语法更简单的话,我希望在理想的环境中使用jQuery解决方案

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

注意,jquery1.7中添加了
on
;如果您使用的是较旧的版本,那么请使用
$(窗口)。改为使用bind

最初,我解决了使用setInterval反复检查URL这一相当丑陋的方法。HTML5 onpopstate在第一次加载页面时运行,然后每次向前和向后导航都会运行

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

为什么不使用location.hash而不是href.match?location.hash应该更快,因为您只需要获取hash,而不必进行匹配?

您正在寻找众多jQuery历史插件中的一个。它们不是本地方式吗?如果一个功能不需要库就可以实现,那么为一个功能使用库似乎是一种耻辱。Thanks@jdn我用类似的方法回答了我的问题#标记链接已经添加到浏览器历史记录中,因此问题是在单击标记链接时触发了某些内容,因此不需要修改浏览器历史记录。我用onpopstate解决了这个问题,它会在历史发生变化时监听,比如当你点击一个#标记时。感谢我不确定我是否使用了正确的术语,我所说的“标记链接”是指链接片段,例如刚刚注意到它还破坏了它下面的任何JavaScript。有语法错误吗?我只是添加了你的代码,我需要定义“hashchange”还是什么?谢谢,不,它应该有用。。。我假设您将jQuery作为
$
全局查询?这是我的解决方案。它的工作原理和我测试的一样,但它依赖于PopState,如果没有它,用户会非常恼火。下面是我对代码的可能错误的实现。我也试着在gmap3函数之前加入jquery函数,但对我来说仍然不起作用。谢谢尝试$(窗口)。绑定而不是$(窗口)。打开。这可能是JQuery版本的问题,因为在版本1.7中添加了.on。这是解决了我的问题还是提高了性能?不管怎样,谢谢你的提示。