TinyMCE конвертирует <xxx>в <xxx></xxx> - как мне это остановить? - PullRequest
2 голосов
/ 15 апреля 2010

Я могу успешно сохранить символы <и>.

Я делаю это с помощью следующих опций:

entities : """
cleanup : false
verify_html : false

Пока проблем нет.

Однако, когда я помещаю что-либо между этим текстом, оно превращается в тег:

&lt;xxx&gt;

конвертируется в

<xxx></xxx>

Как мне это остановить? Я пытаюсь ввести пример HTML в TinyMCE, чтобы я мог документировать некоторые XML. Я думаю, должен быть стандартный способ сделать это.

Ответы [ 2 ]

1 голос
/ 11 июня 2010

Звучит так, будто вы неправильно кодируете символы <и>. TinyMCE - это редактор HTML, и редактируемый им контент анализируется браузером, поэтому наличие в нем неэкранированного символа <и> может привести к непредвиденным результатам в результате обработки браузером искаженного HTML.

Имейте в виду, что в зависимости от того, как вы загружаете HTML для редактирования, браузер может декодировать объекты один раз, прежде чем он попадет в TinyMCE, и в этом случае вам придется дважды кодировать объект, чтобы загрузить его безопасно.

С уважением,

Адриан Саттон
http://tinymce.ephox.com

0 голосов
/ 02 января 2017

Я в основном разрабатываю ответ ajsutton, который послужил отправной точкой для решения проблемы для моих нужд.

Вы должны дважды выйти из <и>, потому что браузер один раз экранирует данные, полученные с сервера, прежде чем передать их в TinyMCE.

Предположим, что вы хотите открыть текстовый массив TinyMCE WYSIWYG с надписью "HTML-тег для жирного шрифта . Несуществующий HTML-тег ."

Предположим, сервер отправляет следующий источник страницы:

<script language="javascript" type="text/javascript">
tinyMCE.init({
        selector : "textarea.myMCE",
        ...
        });
</script>

...

<TEXTAREA NAME="TEST" class="myMCE" ROWS="25" COLS="80">
The HTML tag for boldface is <CODE>&lt;B&gt;.</CODE>
A nonexistent HTML tag is <CODE>&lt;NONSENSE&gt;.</CODE>
</TEXTAREA>

Это не удастся. Браузер (в моем случае firefox) декодирует источник один раз перед отправкой в ​​TinyMCE; Вы можете увидеть это, удалив тег «class = myMCE», чтобы получить простой текстовый массив html со следующим содержимым:

The HTML tag for boldface is <CODE><B>.</CODE>
A nonexistent HTML tag is <CODE><NONSENSE>.</CODE>

Если TinyMCE (4 в моем случае) получает эти данные, и вы смотрите «инструменты»: «Исходный код», вы можете увидеть:

The HTML tag for boldface is <CODE><B>.</CODE>
A nonexistent HTML tag is <CODE>.</CODE>

TinyMCE подавил недействительный HTML-тег "". Визуализированный текст в текстовом массиве THE TinyMCE будет выглядеть так:

HTML-тег для жирного шрифта - . Несуществующий HTML-тег -.

Обратите внимание, что первый "." смелее сейчас!

Правильный источник HTML, который должен отправить сервер:

<TEXTAREA NAME="TEST" class="myMCE" ROWS="25" COLS="80">
The HTML tag for boldface is <CODE>&amp;lt;B&amp;gt;.</CODE>
A nonexistent HTML tag is <CODE>&amp;lt;NONSENSE&amp;gt;.</CODE>
</TEXTAREA>

т.е. все "&" заменены на "& amp;" в содержании текстового массива.

Как вы можете достичь этого, зависит от языка программирования, который вы используете для своих скриптов cgi. В php должен работать str_replace ("&", "& amp;", $ textarrea_contents).

...