Я пытаюсь использовать TinyMCE (версия 4.1.2) в качестве редактора WYSIWYG. Записанные пользователи могут писать свои собственные страницы и напрямую видеть, что будет показано на странице при посещении посетителя.TinyMCE Sanitizing input
Теперь я хотел бы, чтобы html хранился непосредственно. Например:
Зарегистрированный пользователь видит This is my text!
, но на самом деле TinyMCE отображает его как <p>This is my text!</p>
. Существуют также определенные стили, такие как <h1>
и ссылки, которые можно добавить.
Теперь пользователь может вставить гиперссылку, указав ссылку и текст, которые должны отображаться. Проблема, однако, если пользователь вручную пишет <a href='example.com'>Example</a>
, он отображается в редакторе так же, но также сохраняется в чистом html, поэтому при отображении его будет просто гиперссылкой с текстом Example
.
Это как мой код рода выглядит (слева из конфигурации):
tinymce.init({
setup: function(editor){
editor.on('change', function(e){
$('[name="'+editor.id+'"]').next("textarea").html(editor.getContent({format: 'html'}));
});
}
});
Таким образом, текст из поля TinyMCE, копируется в <textarea>
, который находится внутри <form>
, который получает представленные при сохранении.
Что-то вроде этого:
получает хранится как:
<h1>Title</h1>
<p><a href="example.com">example</a></p>
<p><a href="example.com">test</a></p>
Который не оставляет мне никакой возможности отличить подлинные ссылки и чистый текст, так что я не могу обработать его после того, как хранение данных.
Я уже играл с форматами editor.getContent({format: 'html'})
, например format: 'raw'
, но безрезультатно. Что я делаю не так?
Спасибо, но это не совсем то, что я ищу. Код, оформленный в редакторе, на самом деле, например, '
Заголовок
', что хорошо. Однако, когда пользователь вручную пишет 'Заголовок
', я хочу отобразить его таким же. Поэтому только то, что пишет пользователь, должно обрабатываться с помощью sometihng, например 'htmlspecialchars()', чтобы предотвратить случайное закрытие дополнительных тегов и разрешить только теги, которые поддерживает редактор. – jdepypereХорошо, да, это была моя мысль ... В этом случае вам нужно включить формат тега кода и использовать его пользователей. Так как единственное, что делает TinyMCE, это обернуть текст в HTML, он не имеет никакого способа определить, будет ли он переформатировать предварительно отформатированный HTML. Это то же самое, что и большинство других аналогичных редакторов, на самом деле на самом деле мало того, что код html силы должен отображаться, а не анализироваться. – Ethan
Я полагаю, что другой вариант заключается в том, чтобы написать расширение javascript, которое будет искать html-теги, когда вы пишете, и если тег найден автоматически, оберните его в сегмент [code] ... [/ code]. – Ethan