在单击事件/函数期间获取URL哈希值

Get URL hash during click event/function

本文关键字:获取 URL 哈希值 函数 单击 事件      更新时间:2023-09-26

在jQuery点击事件函数期间,我理解点击事件在底层事件完成之前被触发(URL被更新)…这样你就能控制局面了。这意味着链接的哈希还不能通过window.location.hash

获得。

e.target.hash比进入<a>元素本身获得哈希值更好;或者通过onclick事件传递必要的变量?"更好"定义为跨浏览器兼容或更容易出错。

例如:

<a class="accountLink" href="#account/123456">Account 123456</a>
$('.accountLink').click(function(e){
  console.log(e.target.hash);
  console.log(window.location.hash);
});
日志:

#account/123456
(blank on initial click)
https://jsfiddle.net/r1xpsut1/1/

考虑到您的需求,听起来windowonhashchange事件更合适:

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

更新小提琴

根据Mozilla Web API, Event.target在所有现代浏览器中都是支持的,除了使用Event.srcElement的Internet Explorer 6到8,所以如果你想支持它,你可以使用:

var target = (event.target || event.srcElement);

实际上,上述.event属性被定义为:

触发此操作的调用左侧的DOM元素事件,例如:

element.dispatchEvent(event)

因此,它与您自己到达<a>相同。