В Firefox 4.0.1 вставьте следующее в адресную строку
http://www.w3.org/#one#two
Обратите внимание, что браузер переходит на первую страницу w3.org, а в адресной строке по-прежнему отображается
http://www.w3.org/#one#two
В Safari 5.0.4 сделайте то же самое. Обратите внимание, что браузер также перемещается, но текст в адресной строке изменен на
http://www.w3.org/#one%23two
Обратите внимание, что первое появление хеша в строке не изменяется, а второе изменяется в закодированную форму (иначе "escape")% 23.
Кажется разумным предположить, что Safari пытается преобразовать предоставленный пользователем URI в ссылку, которая соответствует его идее действительного URI. Firefox в этом случае не выполняет преобразование.
Я хотел бы объяснить разницу в поведении.
Документ по адресу http://www.ecma -international.org / публикации / стандарты / Ecma-262.htm является одной ссылкой на то, какую форму принимает действительный URI. В разделе 15.1.3.1 в нем говорится о том, что браузеры не могут экранировать URI.
Символ «#» не декодируется из escape-последовательностей, даже если он не является зарезервированным символом URI.
Что это, вероятно, подразумевает, так это то, что оно относится к # символам по всей строке URI, а не только к первому вхождению.
В заключение мой вопрос:
- Соответствуют ли обе формы ссылки последнему стандарту для действительных URI?
- Если они оба действительны, какое поведение браузера является наиболее подходящим?