Как использовать функцию unescape () внутри JavaScript? - PullRequest
1 голос
/ 26 мая 2011

У меня есть страница JSP, на которой у меня есть функция JavaScript, которая будет вызываться при нажатии на ссылку. Теперь, когда значение достигает функции JavaScript, апостроф кодируется.

Пример:

Name#039;s

До # есть &, который изначально должен быть:

Name's

Я использовал функцию декодирования unescape(), но, похоже, ничего не работает. В итоге мне пришлось удалить символы и добавить апостроф. Кто-нибудь знает, как это исправить? Это что JSP не поддерживает кодирование для &? Когда я писал то же самое значение кодирования на этой странице, оно изменило символ на апостроф, что я и хотел в своем коде.

1 Ответ

1 голос
/ 26 мая 2011

Встроенная функция Javascript, такая как unescape(), decodeURIComponent(), не имеет ничего общего со строкой, с которой вы работаете, потому что та, которую вы хотите декодировать, - это HTML-элементы.

В Javascript нет доступного декодера HTML entites, но поскольку вы работаете с браузером, если строка считается безопасной , вы можете сделать следующее (например, в JQuery)

var str = $('<p />').html(str).text();

Он вставляет строку в виде HTML в элемент <p>, а затем извлекает текст внутри.

Редактировать: Я просто понимаю, что вывод JSP, который вы разместили, не является реальными объектами HTML; Чтобы обработать данный пример, вы должны использовать следующее, добавляя & перед каждым #1234; и делая его &#1234;:

var str = $('<p />').html(str.replace(/\#(\d+)\;/g '&#$1;')).text();
...