Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.03.2015, 01:03
Профессор
Отправить личное сообщение для psiklop Посмотреть профиль Найти все сообщения от psiklop
 
Регистрация: 04.03.2015
Сообщений: 163

Способ заключать в строки
В учебнике написано что строки можно заключать в одинарные и двойные кавычки, мне нужно было написать такой код:

на кнопке INPUT поставил атрибут onclick
так onclick= ' код '

далее мне в коде надо было вызвать функцию eval
написал так onclick= ' eval("код") '

далее мне в коде eval нужно использовать такой код document.getElementsByName()
тоесть опять нужно передать строку но я не могу уже использовать не двойные не одинарные кавычки так как они использованы выше
я использовал этот символ ` в firefox работает
можно ли заключать строки в этот символ будет ли работать во всех браузерах? кто знает? или я чего то не догоняю?
Ответить с цитированием
  #2 (permalink)  
Старый 04.03.2015, 01:22
Новичок на форуме
Отправить личное сообщение для Вячеслав Александрович Посмотреть профиль Найти все сообщения от Вячеслав Александрович
 
Регистрация: 26.02.2015
Сообщений: 7

А как на счет экранирования?
onclick= ' eval(\'код\') '
Ответить с цитированием
  #3 (permalink)  
Старый 04.03.2015, 03:29
Профессор
Отправить личное сообщение для psiklop Посмотреть профиль Найти все сообщения от psiklop
 
Регистрация: 04.03.2015
Сообщений: 163

не работает пробовал
Ответить с цитированием
  #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.
Ответить с цитированием
  #5 (permalink)  
Старый 04.03.2015, 12:13
Профессор
Отправить личное сообщение для psiklop Посмотреть профиль Найти все сообщения от psiklop
 
Регистрация: 04.03.2015
Сообщений: 163

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

Сообщение от psiklop
получается html-мнемоники попадают в js движок как есть?
не, их схавает html парсер. Это всего лишь способ записи кавычки внутри строки для html-парсера. Надо же как-то записать кавычку так, чтобы она не считалась закрывающей строку. Вот и придумали такой способ записи.

В js иной способ экранирования - слэш. В атрибутах событий приходится экранировать сразу по двум правилам.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 04.03.2015, 13:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от psiklop
не работает пробовал
Бытует мнение, что в JS вообще мало чего работает...

Бивас, тест! (с)

alert('Это \'тест\' экранирования');

Таки работает!
Ответить с цитированием
  #8 (permalink)  
Старый 04.03.2015, 13:29
Профессор
Отправить личное сообщение для psiklop Посмотреть профиль Найти все сообщения от psiklop
 
Регистрация: 04.03.2015
Сообщений: 163

извиняюсь за тупость, html парсер схавает мнемоник а что он передаст вместо него в js движок?
Ответить с цитированием
  #9 (permalink)  
Старый 04.03.2015, 13:35
Профессор
Отправить личное сообщение для psiklop Посмотреть профиль Найти все сообщения от psiklop
 
Регистрация: 04.03.2015
Сообщений: 163

он преобразуется в кавычку?
Ответить с цитированием
  #10 (permalink)  
Старый 04.03.2015, 13:47
Профессор
Отправить личное сообщение для psiklop Посмотреть профиль Найти все сообщения от psiklop
 
Регистрация: 04.03.2015
Сообщений: 163

вроде разобрался, кстати этот символ ` работает на firefox в js движке а в ie не работает
alert(`строка`);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт не работает на добавленные строки Гробовщик jQuery 2 20.02.2015 13:18
Чтение массива из адресной строки Xalyavbich Общие вопросы Javascript 0 27.06.2012 15:56
Видимость строки таблицы sslab Events/DOM/Window 8 04.12.2011 21:58
Выделение строки в таблице posta ExtJS 5 23.06.2011 12:31
Как вложено прятать строки таблицы? Бобр Общие вопросы Javascript 10 01.08.2010 13:57