3

情况:

网址: http: //mydomain.com/test.html#somehash

测试脚本:

$(document).ready(function () {
    console.log("page initiated");
    if (window.location.hash) {
        console.log("hash changed (if-statement)");
    }

    $(window).on("hashchange", function () {
        console.log("hash changed (on statement)");
    });

});

该脚本也可以在fiddle上找到,但环境不适合显示该行为。

我遇到的问题是当我单击浏览器地址栏并按 Enter 键而不做任何更改时。

  1. 当浏览器 url 有标签时,页面不会重新启动。document.ready不会被解雇,我也没有收到任何控制台消息。

  2. 当浏览器 url 没有主题标签时,页面会重新启动并被document.ready触发。

是否有人对此行为有解释,是否可以捕获它以便在情况 1 中重新加载页面?某处是否有文档,因为我似乎找不到任何文档?

4

1 回答 1

2

这是期望的行为。如果您的 URL 包含哈希字符串,则不应启动整页刷新。

向 URL 添加哈希表示您的意思是在页面内导航,而不是导航到新页面。单击“刷新”按钮表示您要重新请求文档。在 URL 栏上按 enter 和单击刷新是非常不同的事情。

于 2014-03-05T01:29:28.220 回答