Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
URL中的多个片段标识符是否正确?_Url_Fragment Identifier - Fatal编程技术网

URL中的多个片段标识符是否正确?

URL中的多个片段标识符是否正确?,url,fragment-identifier,Url,Fragment Identifier,我偶然发现了一个在URL中使用多个片段标识符的站点,比如(不,这不是我的站点,但我正在链接到它,这给我带来了问题) 但这真的正确吗?它似乎确实给Safari和Internet Explorer带来了问题(听说,我自己还没有尝试过IE) 片段标识符不应该唯一标识文档中的一个位置吗? 这是Safari中的一个bug还是www.ejeby.se以错误的方式使用片段标识符 Edit:似乎Safari的问题在于,除了URL中的第一个之外,它逃避了所有内容。其他浏览器不这样做。行为是否正确?从规范的角度来看

我偶然发现了一个在URL中使用多个片段标识符的站点,比如(不,这不是我的站点,但我正在链接到它,这给我带来了问题)

但这真的正确吗?它似乎确实给Safari和Internet Explorer带来了问题(听说,我自己还没有尝试过IE)

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


Edit:似乎Safari的问题在于,除了URL中的第一个之外,它逃避了所有内容。其他浏览器不这样做。行为是否正确?

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

因此,不,片段不能包含普通的
#
;它必须用
%23
编码


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

我不认为它只是以不同的方式显示,因为在Chrome中会显示正确的页面,但在Safari中会导致错误的搜索结果(倒数第二个用%23转义)。@Johan:你用的是什么Safari版本?因为它适合我(Mac上的Safari 5),而前者用
自动变成后者,用
%23
。这很奇怪。我在雪豹上用的是Safari 5.0.3,我在Safari上用的都不管用(因为它逃避了一些东西,所以你会看到一个没有搜索结果的页面)。第一个在Chrome/Firefox/Opera中工作。我注意到现在的链接是“javascript:;”,url是用javascript设置的,比如:window.location.hash=“newprodukt”;“+name+”、“#“+id+”、“#“+page+”,奇怪的是,它在设置(仍然转义)时确实起作用URL使用javascript,但当它是元素上的常规href属性时则不使用。他们已成功实现从其他站点链接时在Safari中中断的链接?:(忘记将其标记为已接受。它确实回答了原始问题(使用“否,它不正确”).哪个浏览器使用magic escaping等做什么可能是另一个问题。
fragment    = *( ALPHA / DIGIT / "-" / "." / "_" / "~" / "%" HEXDIG HEXDIG / "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" / ":" / "@" / "/" / "?" )