HTML кодированные ссылки и якоря - PullRequest
1 голос
/ 15 июля 2009

У меня есть случай, когда я устанавливаю фокус страницы на определенный элемент (с привязкой перед ним). Когда пользователь не вошел в систему, происходит перенаправление на страницу входа, и после входа пользователь перенаправляется на соответствующую страницу с закодированным URL-адресом.

Я вижу, что URL-адрес ссылки # target работает как положено (фокусируется на элементе), а URL-ссылка% 23target - кодированная ссылка. Это ожидаемое поведение?

Редактировать: Если это ожидаемое поведение, есть ли обходной путь, чтобы сосредоточиться на цели? Как в обход URL закодировать?

Изменить добавить больше информации:
Предполагая, что есть код

page1.html
... html before the anchor ...
<a name="test">Some code</a>
... html after the anchor ...

Я захожу на страницу как page1.html% 23test. Это не работает так же, как page1.html # test. Есть ли метод jQuery для реализации этого? Содержит ли location.hash тест даже после того, как он был закодирован по URL? У меня нет контроля над изменением кодировки URL.

Редактировать:

Поскольку я знал, на какой якорь я хотел перейти после перенаправления страницы, я сделал

window.location.hash = namedAnchor  

чтобы решить проблему. Эта строка JS выводится, только если клиент успешно вошел в систему. Решил мою проблему, но не общий ответ, который я искал. Я искал способ избежать экранирования # в url encode.

Ответы [ 2 ]

5 голосов
/ 15 июля 2009

Да. Кодирование # как% 23 фактически говорит: «Я имею в виду просто старый символ« # », а не фрагмент URL». То же самое относится и к другим зарезервированным символам: экранирование лишает их особого значения в URL.

В вашем случае вы хотите закодировать URL-адрес при передаче его на страницу входа в качестве параметра, но ваша страница входа должна декодировать URL-адрес перед выполнением перенаправления.

0 голосов
/ 15 июля 2009

Вы можете проанализировать эту строку с помощью PHP или другого языка сценариев или с помощью JavaScript, используя encodeURIComponent. Я написал статью для этого, вы можете проверить на http://www.stoimen.com/blog/2009/05/25/javascript-encode-cyrillic-symbols-with-encodeuricomponent/

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

...