我在 html 页面的末尾放置了一个脚本标签:
$(window).on('hashchange', function (e) { alert (location.hash); });
如果我点击像 #a
这样的 href 按钮,它会起作用,但是如果我打开像 localhost/aaa#a
这样的链接,警报功能就不会被触发。
所以看起来我必须在文档准备好时检测散列的存在。但这看起来不对。
有没有办法让它在两种情况下都起作用?
最佳答案
您必须在页面加载时手动触发事件。只有当用户有直接操作时,事件才会被触发。 由于它是页面加载而用户没有采取任何操作,因此不会触发 on hashchange 事件。
$(window).on('hashchange', function (e) {
alert(location.hash);
}).trigger('hashchange');
如果你只想在有哈希值时触发事件,那么
$(window).on('hashchange', function (e) {
alert(location.hash);
});
if (window.location.hash) {
$(window).trigger('hashchange')
}
关于javascript - jQuery 的 hashchange 事件如果我直接打开一个带有 hash 的页面就不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20652020/