Показать сообщение отдельно
  #4 (permalink)  
Старый 04.03.2015, 08:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Вячеслав Александрович
А как на счет экранирования?
Экранировать надо по правилам языка, в котором код пишешь.

В первую очередь мы пишем в HTML, потому как в первую очередь работает HTML-парсер, разбирая наш документ. А в атрибутах кавычки нужно заменять html-мнемониками:

onclick="eval("код")"

onclick='eval('код')'


Либо комбинировать кавычки (как в js):

onclick="eval('код')"

При этом не забываем что мы пишем все-таки js код, хоть и внутри html. HTML-парсер, разобрав документ, передает js-код из атрибута onclick в js-движок, поэтому экранировать надо и по правилам js:


onclick="eval("alert(\"строка\")")"


Смотрим:

<button onclick="eval(&quot;alert(\&quot;строка\&quot;)&quot;)">Click me</button>


Eval - зло. Чайники его любят использовать даже тогда, когда этого вообще не требуется ))

Инлайновые onclick'и - тоже не есть хорошо. Навешивайте обработчики из js и не придется извращаться с экранированием.
__________________
В личку только с интересными предложениями

Последний раз редактировалось danik.js, 04.03.2015 в 08:23.
Ответить с цитированием