1

Тема: Экранирование спец. символов в расширенном редакторе

Добавляю кнопку в расширенный редактор, основываясь на плагине s2_custom_toolbar. Но мне нужно, чтобы отработал JS, который должен выполнится при клике на кнопку. Вставляю следующий код:

$('#arttext').text($('#arttext').text().replace(/(width=\")\d+(\"\W+height=\")\d+(\")/, ''));

После установки плагина и перехода в режим редактирования документа (в расширенном редакторе), пишет ошибку:

Неизвестная ошибка 500
Что-то не сработало. Сообщите администраторам или разработчикам о том, в каких условиях возникает ошибка, и приложите ответ сервера:

Пробовал добавлять так:

$('#arttext').text($('#arttext').text().replace(/(width=\")\d+(\"\W+height=\")\d+(\")/, ''));

Та же ошибка, как мне правильно добавить этот код, чтобы он отработал ?

2

Re: Экранирование спец. символов в расширенном редакторе

Если я правильно понимаю, то речь идет о коде типа

$s2_custom_toolbar .= '<img style="..." src="..." alt="..." onclick="return InsertTag(\'<a target=&quot;_blank&quot; href=&quot;&quot;>\', \'</a>\');" />'."\n\t";

Поскольку этот код является присваиванием php-переменной строкового значения в апострофах, все апострофы внутри должны быть экранированы обратным слешем: \'. Поскольку код обработчика onclick является html-атрибутом, значение которого ограничено кавычками, в нем нельзя использовать кавычки напрямую, их нужно заменять на html-сущности &quot;.

Итого, в вашем втором варианте нужно экранировать апострофы. Не забудьте обновить хуки в вашем расширении (удалить и установить его заново).

Если рассуждения не помогли, скопируйте сюда всё содержимое файла manifest.xml. Будем рассматривать конкретный пример.

3

Re: Экранирование спец. символов в расширенном редакторе

Роман, спасибо за подробное объяснение, помогло :)

Чтобы все отработало, код ниже:

$('#arttext').text($('#arttext').text().replace(/(width=\")\d+(\"\W+height=\")\d+(\")/, ''));

Экранирую так:

$(\'#arttext\').text($(\'#arttext\').text().replace(/(width=\&quot;)\d+(\&quot;\W+height=\&quot;)\d+(\&quot;)/, \'\'));