什么应该在URL,哈希或查询字符串中首先出现?

问题描述 投票:0回答:2

一些在线文章说,在URL中没有querystringhash的标准,但我们正在关注继续发生的事情。所以,我的问题是在同一个URL中同时具有查询字符串和散列的更好方法。

我认为问题是,如果hash跟在querystring之后,它可以成为某些查询字符串数据的值,如果querystring跟随hash,整个查询字符串可能变成hask。那么,我应该遵循什么样的顺序?

javascript url hash query-string
2个回答
2
投票

一些在线文章说,URL中的查询字符串和哈希没有标准

要么他们错了,要么你误解了他们。

查询字符串必须出现在片段标识符(您调用哈希)之前。

specification显示URI的格式:

URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

它清楚地显示了查询后出现的片段。

如果hash跟在querystring之后,它可以成为某些查询字符串数据的值

它不能。 #是一个特殊字符,表示片段的开头。要在查询字符串数据中包含一个,它需要作为%23进行转义。


0
投票

这是我在JavaScript中尝试过的:

window.location="alpha#abc?def=34";
console.log(window.location);

结果是:

Location {
  hash: "#abc?def=34",
  search: "",
  ...otherData
}

然后:

window.location="alpha?abc=34#def";
console.log(window.location);

结果是:

Location {
  hash: "#def",
  search: "?abc=34",
  ...otherData
}

很明显,JavaScript在#符号之后没有区别,而hash之前的查询字符串工作正常。

所以,我们应该首先使用查询字符串然后使用哈希。

© www.soinside.com 2019 - 2024. All rights reserved.