PDA

Просмотр полной версии : Экранирование кавычек? хм,не работает...


BiG_][aKeR
15.01.2010, 20:21
1. Сколько не экранировал всё было норм,а сейчас столкнулся с проблемой
<a onClick="alert(\"abc\")">123</a>
не работает!
Не предлагать мне решение одной скобкой т.е. ' !
Вопрос задан именно в использовании двойной в двойных кавычках!

2.Плюс ко всему еще один глюк нашел в экранировании

<a onClick="document.getElementById('centent1').innerHTML='<b onclick=\'alert(\\\'popko\\\')\'>Кликни,но уже не работает...</b>'">Кликни</a>
<div id='centent1'></div>

По сути по клику по второму тексту должен вывести алерт,все скобки так как и нада стоят,но его НЕТУ...консоль ошибок молчит...

Pir4tt
15.01.2010, 20:45
Как вариант напиши вот так:
<a onClick="alert(&quot;abc&quot;)">123</a>
;)

Deathdreams
16.01.2010, 00:15
Большой_][акер

<a href="#" onClick='document.getElementById("centent1").innerHTML="<b onclick=\"alert(/привет/);\">Кликни,но уже не работает...</b>"'>Кликни</a>
<div id='centent1'></div>



Решение кривовато (посторонние символы), но работает.
А вообще зачем тут такой мазахизм?
Не проще создать JS функцию, которая всё это будет выполнять?
Например:

<script>
function doooo(){

document.getElementById("centent1").innerHTML = "<b onclick=\"alert('привет');\">Кликни,но уже не работает...</b>";
return true;

}
</script>
<a href="#" onclick="doooo();">Кликни</a>
<div id='centent1'></div>

b3
16.01.2010, 00:20
Очень Большой Хакер,

<a onClick="document.getElementById('centent1').innerHTML='<b onclick=alert(\'popko\');>Кликни,но уже не работает...</b></a>'">Кликни</a>
<div id='centent1'></div>

работает алерт

BiG_][aKeR
16.01.2010, 14:18
вопрос стоял не как вывести этот алерт,а как экранирова последуюшие скобки!!!
т.е. можно было бы и по функциям розбросать это всё, onclick=pos();
а в функции всё экранировать свободно можно...
ты сделай так как и в том примере,и этим екранированием,чтоб внутри уже\' \' еще были такие же скобки а в них еще...

imajo.ati
16.01.2010, 14:57
<div onclick="alert(&quot;читай RFC, \&quot;хакер\&quot;&quot; );">hello</div>

Deathdreams
16.01.2010, 16:28
Самый Большой Хакер,
Не заморачивайся ты с нагромождением кавычек.
Лично я создаю отдельные функции, особенно когда времени нет разбираться где какую кавычку ставить.
Я не один такой.

imajo.ati
16.01.2010, 16:30
может ему безымянная нужна

b3
16.01.2010, 23:42
вопрос стоял не как вывести этот алерт,а как экранирова последуюшие скобки!!!
Как и везде - бэкслешами \'
Стоило тему создавать из-за того что б спросить как экранировать спец символы? Ну так прочитай азы программирования, найдеш на первых страницах эту информацию.

nerezus
17.01.2010, 05:55
Как и везде - бэкслешами \' Нет.
А првильный ответ(самый первый) ты стер по незнанию, да еще и камент тупой поставил при удалении.
Фу так делать!

Ну так прочитай азы программирования, найдеш на первых страницах эту информацию. А при чем тут программирование, если проблема в разметке?
Почитай азы ;)

P.S. http://www.gramota.ru/class/coach/tbgramota/45_88 пункт 3.

b3
17.01.2010, 06:18
А при чем тут программирование, если проблема в разметке?
Так в разметке или в экранировании спец символов? Может быть тебе самому стоит загуглить? ))
Как видиш мой вариант работает, и он соответствует поставленой задаче, или ты из тех кто тоже для элементарных задач будет писать гавно-функции, или конструкции типа &quot; ?
ЗЫ По поводу правописания, сам понимаеш, это не существенно, главное суть, учитывая то что :
првильный

Может я не прав, я с JS очень слабо знаком, но с удовольтвием пообщался бы на эту тему, ну есесно не на форуме ;)

Gifts
17.01.2010, 15:09
b3 Есть мнение, что второй вопрос следует из первого. Так что же делать, если автору требуется обрамлять в кавычки аттрибут onclick? Например если там будет тупо два вызова alert на один обработчик?

astrologer
17.01.2010, 16:03
[aKeR']1. Сколько не экранировал всё было норм,а сейчас столкнулся с проблемой
<a onClick="alert(\"abc\")">123</a>
не работает!
Не предлагать мне решение одной скобкой т.е. ' !
Вопрос задан именно в использовании двойной в двойных кавычках!

2.Плюс ко всему еще один глюк нашел в экранировании1. Сколько не стрелял себе в ногу, всё было норм, а сейчас стреляю неправильно и не работает!
Стрелять холостыми не предлагать, толька баивыми!
2. Плюс нашёл глюк в пистолетах - если их неправильно использовать ничего не палучается и даже ошибок в консоли нету


Напишите сначала просто js. Если вам непременно нужно запихнуть его в атрибут - то сделайте следующие замены (aka htmlspecialchars($code, ENT_QUOTES)):
& => &amp;
< => &lt;
> => &gt;
" => &quot;
' => &#39;

P.S. На самом деле автору пофиг совершенно :)

nerezus
17.01.2010, 19:34
Так в разметке или в экранировании спец символов? В экранировании символов в разметке.

я с JS очень слабо знаком Эта штука называется HTML. А что значением параметра является JS-код(наш случай), адрес ит.д. - разницы никакой.

или конструкции типа &quot; ? Я так и пишу. Потому что так правильно.
Твой вариант с \" же не работает.

По поводу правописания, сам понимаеш У нас язык форума - русский, а не "олбанске", так что будь добр изучить ссылку.