Обновление: После публикации на форуме TinyMCE (что я должен был сделать, прежде чем предлагать награду), основная проблема может быть решена, но я все еще очень открыт для что-нибудь относительно других вопросов о том, как отключить поведение изменяемого размера (номера 2 и 3 в конце поста).
У меня проблемы с сохранением контента с TinyMCE в IE8 (не в других версиях). В IE определенные элементы в редакторе имеют маркеры в каждом углу и перетаскиваемые «границы», и когда вы фокусируете, чтобы начать редактирование, может появиться полосатая рамка:
Проблема:
Если я отправлю форму, пока толстая рамка еще видна (состояние 3 на изображении), форма не сохранит содержимое. Я должен щелкнуть в другой области редактора, чтобы все границы исчезли, и , а затем отправить форму.
Я использую jQuery-пакет TinyMCE 3.4.6, я не вижу такого поведения в других браузерах.
Обновление:
Я немного сузил причину проблемы и нашел несколько вещей:
- Проблема возникает со сборкой jQuery или без нее и не зависит от того, какие плагины tinymce используются.
- Более толстая "граница" появляется только тогда, когда к элементу применена (min-) высота / ширина, объявленная как встроенная или из внешнего CSS.
Используя IETester , я получал сообщения об ошибках 'length' is null or not an object
при потере фокуса от активного элемента; т.е. когда вы щелкаете в любом месте вне редактора TinyMCE.
Я не видел этой ошибки в истинной установке IE8 (что-то, к чему у меня сейчас нет доступа), однако: это имеет смысл, учитывая проблему и обходные пути, указанные выше. Мне пришлось дважды нажать «Отправить» и отклонить предупреждения, чтобы получить форму для публикации в IETester.
- Эти границы и дескрипторы будут фактически расширяться за пределы редактора / iframe:
Я создал живое демо , вот его содержание:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript" src="tiny_mce/jquery.tinymce.js"></script>
<script type="text/javascript">
$(function() {
$('textarea.tinymce').tinymce({
script_url : 'tiny_mce/tiny_mce.js',
content_css : 'test.css'
});
});
</script>
<form action="" method="post">
<textarea class="tinymce" name="content"><p>Testing</p></textarea>
<button type="submit">Submit</button>
</form>
/* Content of test.css */
p {
min-height: 24px; /* this line makes the handles appear */
background-color: #f00;
color: #fff;
}
Как воспроизвести:
- Откройте демонстрационную версию в IE8
- Нажмите на существующий абзац, должна появиться небольшая граница в 1px, и вы не сможете редактировать текст.
- Снова нажмите на элемент, теперь появляется толстая рамка и текст можно редактировать.
- Введите несколько символов, затем нажмите кнопку отправки. Обновление не будет отправлено с данными
$_POST
. Если бы вы щелкнули другую область внутри редактора, удалив толстую границу, данные были бы отправлены нормально.
Вопросы / проблемы:
Важно: Как получить форму для публикации отредактированного текста, не требуя обходного пути от пользователя?
Обновление: Это, похоже, решено в недавнем коммите от ведущего разработчика TinyMCE. Я все еще не смог протестировать на реальной установке IE8, но это сработало и заставило замолчать ошибки в IETester.
Менее важно: Есть ли способ полностью предотвратить или удалить ручки и перетаскиваемые края? Я предполагаю, что это связано с реализацией IE contentEditable
, а не с TinyMCE, и, возможно, даже не является причиной проблемы.
- Extra : Как я могу предотвратить распространение этих маркеров за пределы редактора?