Несколько идентификаторов фрагментов правильно в URL? - PullRequest
7 голосов
/ 17 января 2011

Я наткнулся на сайт, который использует несколько идентификаторов фрагментов в своих URL-адресах, например http://www.ejeby.se/#newprodukt#produkt#1075#1 (нет, это не мой сайт, но я ссылаюсь на него, что вызывает у меня проблемы).

Но действительно ли это правильно?Кажется, это вызывает проблемы для Safari и, возможно, также для Internet Explorer (по слухам, я сам не пробовал IE).

Разве идентификатор фрагмента не должен однозначно идентифицировать одно местоположение вдокумент?Это ошибка в Safari или www.ejeby.se неправильно использует идентификаторы фрагментов?

Редактировать: Кажется, что проблема для Safari в том, что он избегает всех #, нопервый в URL.Другие браузеры не делают этого.Правильное поведение или нет?

1 Ответ

9 голосов
/ 17 января 2011

С точки зрения спецификации, фрагмент может содержать следующие символы (я уже расширил производство):

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

Таким образом, фрагмент не долженсодержать равнину #;он должен быть закодирован с помощью %23.

Но возможно, что некоторые браузеры отображают его по-разному, так как последовательности октетов, закодированных в процентах, которые представляют действительные символы UTF-8, заменяются символами, которые они представляют.

...