我假设您正在通过用户或定时事件动态更改哈希。
您不需要使用 setTimeout 来检查哈希,因为有一个 window.onhashchange 事件可以用来触发您的代码。
window.onhashchange = function(e) {
alert('Back button clicked');
}
每次哈希更改时都会触发此代码,无论是通过使用后退/前进历史按钮还是通过代码更改哈希。如果您不希望在使用代码更改哈希时触发代码,则可以使用 if 语句,以便它仅适用于后退/前进历史导航,如下例所示:
https ://stackoverflow.com /a/11545805/1534818
或者
您可以使用 window.onhashchange 根据哈希值执行所有代码,并使用 onclick 事件更改哈希值,以确保您的代码只执行一次。
html:
<a href='#1' class='nav'>1<a/>
<a href='#2' class='nav'>2<a/>
<a href='#3' class='nav'>3<a/>
javascript/jquery:
/*$('.nav').click(function() { //do this if you aren't
window.location.hash = '#' + $(this).html(); //changing the hash in your html
});*/
function getLocationHash() {
return window.location.hash.substring(1);
}
window.onhashchange = function(e) {
switch(getLocationHash()) {
case '1':
execute code block 1;
break;
case '2':
execute code block 2;
break;
case '3':
execute code block 3;
break;
default:
code to be executed if different from case 1, 2, and 3;
}
}
我在我的网站上做了一些类似的事情:http: //www.designhandler.com