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

Вложенные кавычки (Павел-79)
Author Message
Павел-79
Guest





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


PostPosted: Sun Apr 22, 2007 3:32 am (написано за 2 минуты 42 секунды)
   Post subject: Вложенные кавычки
Reply with quote

Объясните, почему не работает:
Code (html): скопировать код в буфер обмена
<a (december.com/html/4/element/a.html) href="javascript:rename_cat(10, '\"текст\"');"> (december.com/html/4/element/.html)Ред</a>
и как правильно прописывать вложенные кавычки (вложенные кавычки могут быть одинарными и двойными, т.е. такой ответ не подходит:
Code (html): скопировать код в буфер обмена
<a (december.com/html/4/element/a.html) href='javascript:rename_cat(10, "\"текст\"");'> (december.com/html/4/element/.html)Ред</a>
функция выглядит так:
Code (JavaScript): скопировать код в буфер обмена
function rename_cat(cat_id, cat_name) {
   var new_name = prompt('Введите новое имя раздела', cat_name);
   if (new_name && new_name != cat_name) {
     location.href = '?action=editname&id='+cat_id+'&name='+new_name;
   }
}
Back to top
Ksnk
Участник форума



Joined: 24 Jun 2005
Posts: 459
Карма: 49
   поощрить/наказать

Location: СПб

PostPosted: Sun Apr 22, 2007 8:00 am (спустя 4 часа 28 минут; написано за 2 минуты 6 секунд)
   Post subject:
Reply with quote

Павел-79 wrote:
Объясните, почему не работает:
imho, потому, что это не Javascript, a HTML. В нем такого нет.
можно обойти эту ситуацию примерно так
Code (html): скопировать код в буфер обмена
<script> (december.com/html/4/element/script.html)function rename_cat(a,b) {alert(b.replace(/`/g,'"'))};</script>
<a (december.com/html/4/element/a.html) href="javascript:rename_cat(10, 'it\'s a ``');"> (december.com/html/4/element/.html)</a>
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sun Apr 22, 2007 12:00 pm (спустя 4 часа 4 секунды; написано за 39 секунд)
   Post subject:
Reply with quote

Ksnk
Можно, и нужно, проще:
Code (html): скопировать код в буфер обмена
<a (december.com/html/4/element/a.html) href="javascript:rename_cat(10, '&quot;текст&quot;');"> (december.com/html/4/element/.html)Ред</a>
Back to top
View user's profile Send private message Send e-mail
Ksnk
Участник форума



Joined: 24 Jun 2005
Posts: 459
Карма: 49
   поощрить/наказать

Location: СПб

PostPosted: Sun Apr 22, 2007 12:03 pm (спустя 2 минуты; написано за 26 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
Ok! Спасибо :) Теперь и я буду знать
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sun Apr 22, 2007 1:08 pm (спустя 1 час 4 минуты; написано за 10 секунд)
   Post subject:
Reply with quote

Ksnk
Всегда пожалуйста ;)
Back to top
View user's profile Send private message Send e-mail
Павел-79
Guest





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


PostPosted: Sun Apr 22, 2007 1:40 pm (спустя 32 минуты; написано за 1 минуту 34 секунды)
   Post subject:
Reply with quote

Юpий Насрeтдинов

Ага, спасибо.

Если я правильно понял.. &quot; - предназначен для html, в обрабатывающий скрипт приходит именно " (наша двойная кавычка)?
Back to top
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sun Apr 22, 2007 1:45 pm (спустя 5 минут; написано за 51 секунду)
   Post subject:
Reply with quote

Павел-79
Да :). В HTML вообще много таких кодов: &nbsp; , &quot; , &amp; (амперсанд), &#037; (если я правильно помню, это одинарная кавычка) и т.д.
Back to top
View user's profile Send private message Send e-mail
Guest






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


PostPosted: Sun Apr 22, 2007 1:57 pm (спустя 12 минут; написано за 1 минуту 9 секунд)
   Post subject:
Reply with quote

Будем пользоваться..

напоследок объясните почему такая конструкция не работает
Code (html): скопировать код в буфер обмена
<a (december.com/html/4/element/a.html) href="javascript:rename_cat(10, '\"текст\"');"> (december.com/html/4/element/.html)Ред</a>
вроде как \ отменяет спецназначение "
Back to top
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Sun Apr 22, 2007 2:10 pm (спустя 13 минут; написано за 33 секунды)
   Post subject:
Reply with quote

Гость wrote:
вроде как \ отменяет спецназначение "
Не в этом случае. Вообще, если ссылок-мнемоник "под рукой" вдруг не нашлось, то вот так:
Code (JavaScript): скопировать код в буфер обмена
<a href="javascript:rename_cat(10, '\'текст\'');">Ред</a>
<a href='javascript:rename_cat(10, "\"текст\"");'>Ред</a>
Back to top
View user's profile Send private message Send e-mail
Павел-79
Guest





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


PostPosted: Sun Apr 22, 2007 2:13 pm (спустя 2 минуты; написано за 11 секунд)
   Post subject:
Reply with quote

Благодарю всех за помошь
Back to top
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sun Apr 22, 2007 2:47 pm (спустя 33 минуты; написано за 12 секунд)
   Post subject:
Reply with quote

AKS
М, красиво [+]
Back to top
View user's profile Send private message Send e-mail
Ksnk
Участник форума



Joined: 24 Jun 2005
Posts: 459
Карма: 49
   поощрить/наказать

Location: СПб

PostPosted: Sun Apr 22, 2007 2:51 pm (спустя 3 минуты; написано за 2 минуты 16 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
А где Вы, извиняюсь, обнаружили красоту? Может быть в том, что AKS хитрым образом игнорировал один тип кавычек в каждом примере? :-) В таком случае - такую красоту еще я написал в моем первом посте ;)
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sun Apr 22, 2007 5:03 pm (спустя 2 часа 12 минут; написано за 49 секунд)
   Post subject:
Reply with quote

Ksnk
Идея красивая :). Занимает немного места, и не требует определения внешней функции (которая, к тому же, не всегда корректно работает :))
Back to top
View user's profile Send private message Send e-mail
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Sun Apr 22, 2007 8:35 pm (спустя 3 часа 31 минуту; написано за 2 минуты 6 секунд)
   Post subject:
Reply with quote

Ksnk wrote:
AKS хитрым образом игнорировал один тип кавычек
Ну-у-у, "изобразили" меня каким-то коварным хитрецом! :) :) :)
А я всего-то написал оставшийся после вас вариант (для меня он последний, а наверно есть и еще что-нибудь)...
Back to top
View user's profile Send private message Send e-mail
Ksnk
Участник форума



Joined: 24 Jun 2005
Posts: 459
Карма: 49
   поощрить/наказать

Location: СПб

PostPosted: Sun Apr 22, 2007 11:58 pm (спустя 3 часа 23 минуты; написано за 1 минуту 55 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
AKS
Да, ладно :), речь о том, что по условиям задачи, в строке, которая передается в функцию может быть ОБА типа кавычек. а вот это уже без спец-символов - ниасилить :(
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Mon Apr 23, 2007 12:34 am (спустя 35 минут; написано за 11 секунд)
   Post subject:
Reply with quote

Ksnk
Жесть :). Ведь действительно человек об этом сказал...
Back to top
View user's profile Send private message Send e-mail
Zeroglif
Участник форума



Joined: 02 Jan 2006
Posts: 293
Карма: 61
   поощрить/наказать


PostPosted: Mon Apr 23, 2007 11:37 am (спустя 11 часов 2 минуты; написано за 3 минуты 28 секунд)
   Post subject:
Reply with quote

Если двойные кавычки вокруг атрибута, то \u0022 внутри строки, &quot; тоже можно, но в этом случае мы разрешим html-парсеру залезть внутрь строки с заменой, в первом случае он просто проходит лесом... мимо корректной javascript-строки.
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Mon Apr 23, 2007 1:37 pm (спустя 2 часа 4 секунды; написано за 2 минуты 49 секунд)
   Post subject:
Reply with quote

Zeroglif wrote:
в первом случае он просто проходит лесом... мимо корректной javascript-строки
А разве ссылка-мнемоника делает javascript-строку некорректной? Она ведь - часть строки-литерала. Должен признаться - думал (опираясь на то, что ранее на этом форуме было определено, как "бытовая логика"), что вычисляться (в данном случае) строка из параметра будет в момент создания pop-up окошка...
Back to top
View user's profile Send private message Send e-mail
Zeroglif
Участник форума



Joined: 02 Jan 2006
Posts: 293
Карма: 61
   поощрить/наказать


PostPosted: Mon Apr 23, 2007 3:13 pm (спустя 1 час 35 минут; написано за 5 минут 18 секунд)
   Post subject:
Reply with quote

AKS wrote:
А разве ссылка-мнемоника делает javascript-строку некорректной?
А разве это превращение из одного в другое в результате работы парсера имеет прямое отношение к javascript и его алгоритмам?
AKS wrote:
будет в момент создания pop-up окошка
Есть ещё момент прохода html-парсера по атрибуту, когда собственно ошибка с кавычкой ломает/изменяет/обрывает код.
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Mon Apr 23, 2007 5:02 pm (спустя 1 час 49 минут; написано за 13 секунд)
   Post subject:
Reply with quote

Zeroglif
Все, теперь понял о чем речь...
Back to top
View user's profile Send private message Send e-mail
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