Javascript 了解hashchange事件的发起人

Javascript 了解hashchange事件的发起人,javascript,dom,javascript-events,Javascript,Dom,Javascript Events,我有一个页面,有一些链接指向绑定到hashchange事件的锚和事件处理程序: <a href="#foo">Link</a> <script type="text/javascript"> $(window).on('hashchange', function(e) { // Do something }); </script> $(窗口).on('hashchange',函数(e){ //做点什么 });

我有一个页面,有一些链接指向绑定到
hashchange
事件的锚和事件处理程序:

<a href="#foo">Link</a>

<script type="text/javascript">
    $(window).on('hashchange', function(e) {
        // Do something
    });
</script>

$(窗口).on('hashchange',函数(e){
//做点什么
});
但是,事件
e
的目标是
Window


有没有办法确定是什么引发了
hashchange
事件,即单击的链接?

这有点像黑客,但仍然有效

我所做的是在用户单击链接时附加
hashchange
事件

<a href="#foo">Link</a>
<a href="#foo2">Link</a>


$(document).on('click', 'a[href*="#"]', function(e) {
  $(window)
    .off('hashchange.myNamespace')
    .one('hashchange.myNamespace', function(e2) {
      console.log(e);
      console.log(e2);
    });
});

$(文档)。在('click','a[href*=“#”]”上,函数(e){
$(窗口)
.off('hashchange.myNamespace')
.one('hashchange.myNamespace',函数(e2){
控制台日志(e);
console.log(e2);
});
});

另一个解决方法是检查页面上所有链接的哈希

$(window).on('hashchange', function(e) {
  var hash = location.hash;
  $('a').each(function() {
    var that = $(this);
    if (that.attr('href') === hash) {
      //that is the initiator
    }
  });
});