我有以下代码来检测散列已更改并存在哈希。问题是,当人们点击后退按钮时,代码将运行两次,因为我的网址是www.site.com/#apple,哈希存在,计算机思维哈希也发生了变化。无论如何你要跑其中任何一个。应该是这样当人们点击我的www.site.com时,没有任何事情发生。当人们单击其中一个按钮时,哈希交换代码会运行,但哈希存在的代码将无法运行。当用户转到我的其他页面并点击后退按钮时,它会运行哈希存在的代码,但不会运行哈希更改代码。
$(window).on('hashchange',function(){
alert('Apple');
});
if(window.location.hash) {
alert('Apple');
}

答案 0 :(得分:0)
不是100%清楚你要从你的描述中做些什么,而是尝试一下:
var hash = '';
$(document).load(function() {
$(window).trigger('hashchange');
});
$(window).on('hashchange', function() {
if (hash == window.location.hash) {
// do nothing, hash is the same as it was previously
return;
}
hash = window.location.hash;
if (hash) {
alert("Apple");
}
});