Safari несколько хэштегов - PullRequest
       5

Safari несколько хэштегов

0 голосов
/ 13 декабря 2010

Я недавно протестировал свой сайт в Safari и по какой-то странной причине он читает только первый хэштег в URL

http://www.mangamanga.com/mangaReader.php#mangaNo=3%23chapterNo=8%23pageNo=1

, тогда как во всех других браузерах это выглядит так

http://www.mangamanga.com/mangaReader.php#mangaNo=3#chapterNo=8#pageNo=1

Может кто-нибудь объяснить, почему это происходит.

Ответы [ 4 ]

3 голосов
/ 13 декабря 2010

Хеш (#) является зарезервированным символом в URL. Любые символы, следующие за хешем, являются фрагментом фрагмента URL. Таким образом, Safari сбрасывает лишние незаконные хэши в% 23.

http://labs.apache.org/webarch/uri/rfc/rfc3986.html

2 голосов
/ 13 декабря 2010

Обычный # фактически не разрешен во фрагменте :

fragment    = *( pchar / "/" / "?" )

Где pchar эквивалентно этому расширению:

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

Нет простого # там. Таким образом, поведение Safari будет ожидаемым поведением.

Но, возможно, другие браузеры просто отображают %23 как # для удобства чтения.

0 голосов
/ 05 февраля 2014

То, что большинство людей говорили, правда;Safari считает его недопустимым символом (второй хэш), но другие современные браузеры (IE / Chrome) подходят для них.

Гамбо заявил, что другие браузеры просто отображают второй хэш как #, но на самом деле это% 23.Насколько я могу судить, это неверно, поскольку использование document.location.hash.split('#') даст вам следующий массив:

[0] - http://www.mangamanga.com/mangaReader.php#mangaNo=3
[1] - chapterNo=8
[2] - pageNo=1
0 голосов
/ 13 декабря 2010

% 23 - как экранируются символы #. Очевидно, Safari чувствует себя так, как это делают другие браузеры. Кажется, в любом случае загружать одну и ту же страницу.

Вот список кодов перехода: http://www.december.com/html/spec/esccodes.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...