在URL上,为什么GET变量之后的锚(#)

时间:2013-08-05 01:31:51

标签: url variables anchor

要在链接页面上显示带有id的已定义元素,我们会将#插入元素的ID。

E.g:

<a href="http://www.mysite.com/test/test.php#mydiv">DIV</a>

如果我们在链接中包含/ GET variables,则必须在#标记之前。

这有效:

<a href="http://www.mysite.com/test/test.php?a=1#mydiv">DIV</a>

这不是:

<a href="http://www.mysite.com/test/test.php#mydiv?r=1">DIV</a>

原因在哪里?

2 个答案:

答案 0 :(得分:1)

请参阅STD 66,URI标准。

3.5. Fragment

  

片段标识符组件由数字符号(“#”)字符的存在表示,由URI结尾表示。

     

[...]

     

允许字符斜杠(“/”)和问号(“?”)表示片段标识符中。

因此,只要在路径中找到#,片段就会启动。之后的一切都是片段的一部分。因此,您的上一个示例包含以下片段:mydiv?r=1

答案 1 :(得分:0)

网址标准要求锚必须位于最后位置

标准是

<protocol>://<host>:<port>/<path>?<query>#<anchor>

许多部件都是可选的,但必须保持订单。