【问题标题】:Page refresh from address bar with #hash使用#hash 从地址栏刷新页面
【发布时间】:2013-05-06 17:25:44
【问题描述】:

情况:

网址: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 中重新加载页面? 某处是否有文档,因为我似乎找不到任何文档?

【问题讨论】:

  • 这是理想的行为。如果您的 URL 包含哈希字符串,则不应启动整页刷新。
  • 我有点震惊。这是在某处记录的吗?是否有特定的理由将其呈现为所需的行为?当我点击浏览器菜单上的“刷新”按钮时,我会正常刷新。
  • 向 URL 添加哈希表示您的意思是在页面内导航,而不是导航到新页面。单击“刷新”按钮表示您要重新请求文档。在 URL 栏上按 Enter 和单击刷新是完全不同的事情。
  • @meager - 感谢您的意见。我想“页面内的导航”为我清除了它。尤其是在进行编程时,我可能会在上述场景中刷新并期望页面刷新。很高兴知道这一点。
  • @meager - 你能否添加一个答案或告诉我如何关闭这个问题作为回答?

标签: javascript page-refresh hashtag


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-31
    • 2020-08-08
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 2010-12-26
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多