Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Экранирование кавычек? хм,не работает... (https://forum.antichat.xyz/showthread.php?t=171143)

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

Цитата:

Сообщение от BiG_][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; ?
Я так и пишу. Потому что так правильно.
Твой вариант с \" же не работает.

Цитата:

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


Время: 19:48