javascript - jQuery 的 hashchange 事件如果我直接打开一个带有 hash 的页面就不起作用

标签 javascript jquery html

我在 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/

相关文章:

javascript - AngularJs 中的 Google Charts-Map

jquery - io.socket.emit 返回未定义

jquery - 如何在 Rails 3.1 Assets 管道中正确使用 jQuery?

html - 当设备是阿拉伯语时,输入字段显示类型为 ="number"的阿拉伯语

python - 为什么我在 django 上的 html 文件上出现 endfor 加载错误?

javascript - Vue.js 模板和插值 - 不渲染数据

javascript - 过滤数组并查找拼接索引

android - Phonegap(应用程序错误...发生网络错误)

javascript - JS 中的长版本函数

javascript - jQuery .animate() 问题