Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

onclick="javascript:this.innerHTML='что-то' как экранировать содержимое в кавычках? (Дмитрий К.)
Author Message
Дмитрий К.
Участник форума



Joined: 07 Sep 2004
Posts: 229
Карма: -24
   поощрить/наказать

Location: Внутренний мир

PostPosted: Thu Feb 14, 2008 2:32 pm (написано за 7 минут 3 секунды)
   Post subject: onclick="javascript:this.innerHTML='что-то' как экранировать содержимое в кавычках?
Reply with quote

Здравствуйте. Мне нужно сделать так, чтобы по клику на какое-то слово, вместо него появлялся бы input. Value этого input'а содержит html-код. Так же этот input содержит JS инструкции.

Я сделал так:
Code (php): скопировать код в буфер обмена
// Какой-то произвольный html-код, который будет отображаться в input'е
$html = '<body style="margin: 0px">';
Code (html): скопировать код в буфер обмена
<div (december.com/html/4/element/div.html) style="width: 200px" onclick="javascript:this.innerHTML='<input type="text" value="< (december.com/html/4/element/.html)?=htmlspecialchars($html)?> (december.com/html/4/element/.html)" onclick="javascript:this.focus();this.select();" />'">
Click Here
</div>
Но это не работает. Видимо всё то, что находится в кавычках после javascript:this.innerHTML= нужно как-то экранировать?

Спасибо.
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Thu Feb 14, 2008 2:43 pm (спустя 10 минут; написано за 9 секунд)
   Post subject:
Reply with quote

&quot;
Back to top
View user's profile Send private message
Дмитрий К.
Участник форума



Joined: 07 Sep 2004
Posts: 229
Карма: -24
   поощрить/наказать

Location: Внутренний мир

PostPosted: Thu Feb 14, 2008 3:33 pm (спустя 50 минут; написано за 1 минуту 22 секунды)
   Post subject:
Reply with quote

WingedFox всмысле двойные кавычки заменять? Заменил. JS, который находится в появляющемся по клику input'е не работает.
Code (html): скопировать код в буфер обмена
<html> (december.com/html/4/element/html.html)

<head> (december.com/html/4/element/head.html)
  <title> (december.com/html/4/element/title.html)</title>
</head>

<body> (december.com/html/4/element/body.html)

<div (december.com/html/4/element/div.html) style="width: 200px" onclick="javascript:this.innerHTML='<input type=&quot;text&quot; value=&quot;something&quot; onclick=&quot;javascript:this.focus();this.select();&quot; />'">
Click Here
</div>

</body>

</html>
Т.е. вот это:
Code (JavaScript): скопировать код в буфер обмена
onclick=&quot;javascript:this.focus();this.select();&quot;
не хочет работать...
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Thu Feb 14, 2008 3:40 pm (спустя 7 минут; написано за 18 секунд)
   Post subject:
Reply with quote

Дмитрий К.
Наверное стоит что-то сделать с родительским обработчиком клика?
Back to top
View user's profile Send private message
Дмитрий К.
Участник форума



Joined: 07 Sep 2004
Posts: 229
Карма: -24
   поощрить/наказать

Location: Внутренний мир

PostPosted: Thu Feb 14, 2008 3:42 pm (спустя 1 минуту 55 секунд; написано за 31 секунду)
   Post subject:
Reply with quote

WingedFox, эм... я честно говоря не знаю...
Back to top
View user's profile Send private message
Дмитрий К.
Участник форума



Joined: 07 Sep 2004
Posts: 229
Карма: -24
   поощрить/наказать

Location: Внутренний мир

PostPosted: Thu Feb 14, 2008 7:03 pm (спустя 3 часа 21 минуту; написано за 1 минуту 36 секунд)
   Post subject:
Reply with quote

А, всё понял. Но если в $html содержатся двойные кавычки, то ничего не выходит. Т.е. если $html == '"something', то в результате получится value=&quot;&quot;something&quot; , а это не работает. Как быть? В $html обязательно будут двойные кавычки, которые нельзя заменять.
Back to top
View user's profile Send private message
Дмитрий К.
Участник форума



Joined: 07 Sep 2004
Posts: 229
Карма: -24
   поощрить/наказать

Location: Внутренний мир

PostPosted: Mon Feb 25, 2008 3:58 pm (спустя 10 дней 20 часов 54 минуты; написано за 18 секунд)
   Post subject:
Reply with quote

Bump...
Back to top
View user's profile Send private message
Владимир Коэн-Цедек
Участник форума



Joined: 26 Sep 2004
Posts: 176
Карма: 8
   поощрить/наказать

Location: с исторической родины

PostPosted: Mon Feb 25, 2008 6:51 pm (спустя 2 часа 53 минуты; написано за 1 минуту 15 секунд)
   Post subject:
Reply with quote

Попробуйте заменять двойные кавычки не на &quot;, а на \"

Другое решение - не писать эту команду прямо в обработчике, а отдельно в скрипте сделать функцию и в обработчике обращаться к ней.
Back to top
View user's profile Send private message
костяш
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Jun 17, 2010 12:13 pm (спустя 2 года 3 месяца 20 дней 17 часов 22 минуты; написано за 58 секунд)
   Post subject:
Reply with quote

надо два раза заменять
Code (php): скопировать код в буфер обмена
htmlspecialchars(htmlspecialchars($html, ENT_QUOTES), ENT_QUOTES)
Back to top
костяш
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Jun 17, 2010 12:18 pm (спустя 4 минуты; написано за 18 секунд)
   Post subject:
Reply with quote

т.е. заменять &quot; ещё раз: &amp;quot;
Back to top
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML