如何在 URL 中出现 # 时调用 javascript 函数

How to invoke javascript function when # is present in URL

我试图在 URL 中出现 # 时调用 JavaScript 函数。我知道正常行为是导航/滚动到特定标签。但是找不到如何调用 JavaScript 函数。

下面的例子很接近,但没有解决我的问题。

What is the meaning of # in URL and how can I use that?

var hash = window.location.hash;
if(hash){
// do something
}
<script>
  if (window.location.href.includes('#')) {
    // run your code here
  }
</script>

使用 location.hash 函数将解决您的问题

var hash = window.location.hash.replace(/#/g, '');
if(hash){
// found a hash
console.log("heyy I found a hash")'
}
else{
// did not find a hash
console.log("Uh oh")
/*
  try using :
  window.location = window.location + '#' + "some random variable"
  to create a new URL and every time the page loads find the hash and 
  display the wanted data.
*/
}

PS:这仅在您的 URL 类似于 example.com/#xyz 时有效 然后它会给你 xyz 作为控制台输出。这听起来可能 含糊不清,但如果你这样做,你可能会有一个想法

您可以利用 hashchange 事件来触发函数,假设您不想继续轮询位置以查看它是否发生变化。

文档:https://developer.mozilla.org/en-US/docs/Web/API/Window/hashchange_event

此代码片段会将侦听器添加到当前页面,然后操作哈希并触发函数,显示新的哈希值。您可以在这里调用任何函数。

window.addEventListener('hashchange', function() {
    alert(location.hash);
});

window.location += "#test";