9

我偶然发现了一个在其 URL 中使用多个片段标识符的站点,例如http://www.ejeby.se/#newprodukt#produkt#1075#1(不,它不是我的站点,但我链接到它,它给我带来了问题)。

但这真的正确吗?它似乎确实会导致 Safari 和 Internet Explorer 出现问题(传闻,我自己没有尝试过 IE)。

片段标识符不应该唯一标识文档中的一个位置吗?这是 Safari 中的错误还是 www.ejeby.se 以错误的方式使用片段标识符?

编辑:似乎 Safari 的问题在于它转义了所有 # 除了 URL 中的第一个。其他浏览器不这样做。行为正确与否?

4

1 回答 1

11

从规范的角度来看,片段可以包含以下字符(我已经扩展了产品):

fragment    = *( ALPHA / DIGIT / "-" / "." / "_" / "~" / "%" HEXDIG HEXDIG / "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" / ":" / "@" / "/" / "?" )

所以,不,片段不能包含普通的#; 它必须用%23.

但是,某些浏览器可能会以不同的方式显示它,就像百分比编码的八位位组序列一样,代表有效的 UTF-8 字符被它们所代表的字符替换。

于 2011-01-17T17:23:52.183 回答