Как добавить Юникод строку в HTML через JavaScript?
Здравствуйте, подскажите пожалуйста.
Символ & в Юникоде равен "&" + "#38;", если я напрямую вписываю его в html: <div id="div" title="&"></div> То в итоге я получаю вот такой результат: <div id="div" title="&"></div> Все супер! НО! Если я хочу добавить юникод с помощью js: var div = document.getElementById('div'); div.setAttribute('title', "&"); То результат получается вот такой: <div id="div" title="&"></div> Почему так? Как сделать так, чтоб при добавлении юникода в html с помощью js результат был: <div id="div" title="&"></div> Спасибо за помощь и ваше время. |
http://unicode-table.com/ru/search/?q=%26
юникод & -> \u0026 |
Цитата:
|
Armen,
div.setAttribute('title', "\u0026");:-? |
Цитата:
& я привел только в качестве примера, но на самом деле может быть любой символ |
Armen,
пишите как есть -- в чём проблема то? |
Цитата:
Должна быть функция, которая на входе получает строку, напирмер "HELLO" - эту строку она обрабатывает и кодирует в Unicode после чего добавляет в title атрибут, в итоге должно получиться <div title="HELLO"> |
Цитата:
|
Цитата:
|
Armen,
ок подождём гуру, который и вам поможет и я смогу узнать в чём была ваша проблема. |
Цитата:
С сервера приходит строка, чтобы обезопасить сайт от xss(ведь кто знает, что мне сервер может прислать, это может быть и javascript), который если я вставлю в свой элемент, он же атрибут, то будет ой как не хорошо. Вот я и хочу закодировать символы, которые будут приходить с сервера и при этом отображаться корректно в атрибутах. Кстати, как вариант - можно использовать hex, то есть: var hex = '&'.charCodeAt().toString(16); // 26 div.setAttribute('title', "\x" + hex); // error div.setAttribute('title', "\x26"); // СУПЕР Как видите, я не могу писать так "\x" + hex сразу ошибка. |
А вот и решение, может кому-то пригодится
var hex = '&'.charCodeAt().toString(); div.setAttribute('title', String.fromCharCode(hex)); |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
придет с сервера вот такая штука <script>alert("xss")</script>
Без вашего ведома такое вообще-то с сервера никак не может прийти, если же приходит значит вы не контролируете ситуацию на нем. Другой случай, это уже атаки типа "человек по середине", но превращать нужно не символы в unicod, а "опасные" символы в html-сущности <, >, &. |
Часовой пояс GMT +3, время: 22:07. |