我偶然发现了一个在其网址中使用多个片段标识符的网站,例如http://www.ejeby.se/#newprodukt#produkt#1075#1(不,它不是我的网站,但我链接到它,这给我带来了问题)。
但这是否正确?它似乎确实导致Safari和可能还有Internet Explorer的问题(传闻,我自己没有尝试过IE)。
片段标识符不应该唯一标识文档中的一个位置吗? 这是Safari中的一个错误,还是www.ejeby.se以错误的方式使用片段标识符?
编辑:似乎Safari的问题在于它逃脱了所有#但是URL中的第一个#。其他浏览器不这样做。是否正确行为?
答案 0 :(得分:9)
从规范的角度来看,fragment可以包含以下字符(我已经扩展了制作):
fragment = *( ALPHA / DIGIT / "-" / "." / "_" / "~" / "%" HEXDIG HEXDIG / "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" / ":" / "@" / "/" / "?" )
所以,不,该片段不得包含普通#
;它必须使用%23
进行编码。
但有些浏览器可能会以不同的方式显示它,就像百分比编码的八位字节序列一样,代表有效的UTF-8字符会被它们所代表的字符所取代。