在 URL 中使用 Hash(#)

Posted

技术标签:

【中文标题】在 URL 中使用 Hash(#)【英文标题】:Usage of Hash(#) in URL 【发布时间】:2014-03-17 23:44:42 【问题描述】:

我想知道除了作为 URL 中的锚点之外,还有没有其他用途。我在这里读到了 getting the full url including query string after hash 。 客户端的状态信息是什么?请帮忙。

【问题讨论】:

url末尾的#指定html元素的id。 Fragment_identifier 如果您向下滚动此页面并单击任何评论上的发布时间会发生什么?密切关注 URL 变化和行为。 【参考方案1】:

散列值也可用于单页应用程序,因此您可以使用散列值作为在页面之间导航的一种方式,而不是使用它来导航到页面中的某个点。这样做的好处是不需要刷新页面。

还有一种叫做 hashbanging 的方法,它用于单页应用程序,用于帮助 ajax 应用程序更具索引性。

有几篇关于这个主题的好文章

https://github.com/browserstate/history.js/wiki/Intelligent-State-Handling http://danwebb.net/2011/5/28/it-is-about-the-hashbangs https://developers.google.com/webmasters/ajax-crawling/

【讨论】:

+1,很好的回复! https://mail.google.com/mail/u/0/#inbox 中的 #inbox 是一种无需刷新页面即可在页面之间导航的方法吗?它是在服务器还是客户端(网络浏览器)上实现的?【参考方案2】:

考虑一页网站,或完全基于 AJAX 构建的网站,无需重新加载任何页面。

#hash 帮助此类应用程序将应用程序的状态推送到客户端,这有助于应用程序本身了解状态,并帮助客户端(和浏览器)了解状态。这也将帮助用户将应用程序的当前状态添加为书签,并使用后退和前进按钮(浏览器历史记录)。

【讨论】:

那里有这样的网站吗? @Naman 如果您对您的问题有任何通知或新答案,*** 将使用 # 片段标识符 突出显示它。 @Naman 也看看这个template。我认为它主要用于企业应用程序(例如 Intranet)或网站后端。 @pilot yashhy 和片段标识符不一样吗? @Naman # (hash, anchor, state) 也将在 ? 之后,但作为参数一部分的所有哈希 (#) 都将被 url 编码(将变为 %23)。我不确定你的情况,这取决于用例,但你可以自己尝试,并通过工作示例在 cmets 中告诉我。

以上是关于在 URL 中使用 Hash(#)的主要内容,如果未能解决你的问题,请参考以下文章

使用 JS/jQuery 从 URL 中删除哈希

hash和history

Vue-router 中hash模式和history模式的区别

Vue Router 中模式选择

Vue Router 中模式选择

URL 地址栏锚点 window location hash 使用方法