Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery的hashchange事件没有';如果我直接用hash打开一个页面,则无法工作_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery的hashchange事件没有';如果我直接用hash打开一个页面,则无法工作

Javascript jQuery的hashchange事件没有';如果我直接用hash打开一个页面,则无法工作,javascript,jquery,html,Javascript,Jquery,Html,我在html页面的末尾放置了一个脚本标记: $(window.on('hashchange',函数(e){alert(location.hash);}) 如果我单击带有HREF的按钮(如#a),它会工作,但如果我打开链接(如localhost/aaa),则不会触发警报功能 $(window).on('hashchange', function (e) { alert(location.hash); }).trigger('hashchange'); 因此,看起来我必须在文档准备就绪时检

我在html页面的末尾放置了一个脚本标记:

$(window.on('hashchange',函数(e){alert(location.hash);})

如果我单击带有HREF的按钮(如
#a
),它会工作,但如果我打开链接(如
localhost/aaa
),则不会触发警报功能

$(window).on('hashchange', function (e) {
    alert(location.hash);
}).trigger('hashchange');
因此,看起来我必须在文档准备就绪时检测哈希的存在。但这看起来是错误的


有没有办法使它在这两种情况下都能工作?

您必须在页面加载时手动触发事件。只有在用户直接执行操作时才会触发该事件。 由于它是页面加载,用户不执行任何操作,因此不会触发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')
}