在 URL、hash 或 querystring 中应该首先出现什么?

Pra*_*dal 4 javascript url hash query-string

一些在线文章说,URL 中的querystring和没有标准hash,但我们正在关注继续发生的事情。所以,我的问题是在同一个 URL 中同时使用查询字符串和哈希值的更好方法是什么。

我认为的问题是,如果哈希跟随查询字符串,它可以成为某些查询字符串数据的值,如果查询字符串跟随哈希,则整个查询字符串可能成为哈希。那么,我应该遵循什么顺序?

Pra*_*dal 10

这是我在 JavaScript 中尝试过的:

window.location="alpha#abc?def=34";
console.log(window.location);
Run Code Online (Sandbox Code Playgroud)

结果是:

Location {
  hash: "#abc?def=34",
  search: "",
  ...otherData
}
Run Code Online (Sandbox Code Playgroud)

进而:

window.location="alpha?abc=34#def";
console.log(window.location);
Run Code Online (Sandbox Code Playgroud)

结果是:

Location {
  hash: "#def",
  search: "?abc=34",
  ...otherData
}
Run Code Online (Sandbox Code Playgroud)

显然,JavaScript 不区分 # 符号之后的任何内容,而哈希之前的查询字符串则可以正常工作。

所以,我们应该先使用querystring,然后使用hash。


Que*_*tin 8

一些网上文章说,URL中的querystring和hash没有标准

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

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

说明书示出了URI的格式:

URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
Run Code Online (Sandbox Code Playgroud)

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

如果哈希跟随查询字符串,它可以成为某些查询字符串数据的值

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