TinyMCE на IE8: проблема с текстовым курсором - PullRequest
3 голосов
/ 04 ноября 2010

когда я набираю что-то на то есть 8 и нажимаю «жирный» на панели инструментов в верхней части текстового редактора, курсор переместится в начало всего текстового редактора.это ошибка в крошечной Mce?

с другой стороны, если я выделю набранный текст и нажал Ctrl + B, нет проблем;оба хороши в Firefox, т.е. 6

Ответы [ 3 ]

2 голосов
/ 18 февраля 2011

Вы пытались отключить "Просмотр-> Просмотр каретки" в IE8? (переключается F7)

  • Это сработало для меня
2 голосов
/ 09 марта 2011

У меня была похожая проблема, когда изображение, которое я хотел вставить, всегда направлялось в верхнюю часть редактора. Я решил это, установив поле 'onchange_callback' в редакторе init:

tinyMCE.init({..., onchange_callback: 'updateSelectionBookmark', ...});

Это вызовет мою функцию «updateSelectionBookmark», когда на экране что-то будет изменено, включая размытие редактора (Подробнее: http://tinymce.moxiecode.com/wiki.php/Configuration:onchange_callback). Мой updateSelectionBookmark выглядел примерно так:

function updateSelectionBookmark (ed) {
  ed.updatedSelectionBookmark = ed.selection.getBookmark(1);
}

Это добавит пользовательское свойство к объекту редактора, который всегда будет содержать самую последнюю закладку.

Затем я использую сохраненную закладку, когда мне нужно добавить содержимое:

ed.selection.moveToBookmark(ed.updatedSelectionBookmark);

Я хотел вставить HTML, поэтому поместил его перед вызовом команды экземпляра (в моем случае mceInsertRawHTML).

Надеюсь, это кому-нибудь поможет, даже если мой ответ опоздал на несколько месяцев.

Редактировать (несколько месяцев спустя): Поэтому я изначально нашел это решение при работе с TinyMCE 3.2.2.3, но недавно мы обновили до 3.4.4 для совместимости с IE9. Похоже, что вышеприведенное решение работает не так хорошо, как я думал. С тех пор я нашел (насколько я могу судить) идеальное решение для этого. Это похоже на выше, за исключением случаев, когда и где вызвать обратный вызов. Вместо использования onchange_callback в настройках, вы должны использовать событие редактора onEvent:

tinyMCE.init({
  ...,
  setup: function (ed) {
    ed.onEvent.add(function (ed, e) {
      ed.updatedSelectionBookmark = ed.selection.getBookmark(1);
    });
  },
  ...
});

Это заменяет необходимость использования функции updateSelectionBookmark или параметра onchange_callback. Причина, по которой onEvent работает лучше, чем onChange, заключается в том, что он вызывается после любого возможного события, включая нажатие мыши или клавиши, поэтому положение курсора гарантированно сохраняется даже при перемещении, но содержимое не изменяется.

После настройки редактора с указанным выше обратным вызовом события просто используйте moveToBookmark, как указано выше, чтобы восстановить выделение. Я проверял это на IE9, Chrome, FF6, он работает при вставке изображений / текста в текст / таблицы.

1 голос
/ 13 ноября 2010

Я бы не сказал, что это ошибка в IE8.
Курсор не перемещается магией, кто-то (tinymce) помещает его куда-нибудь.
Так что, если курсор не появляется в ожидаемой позиции, это должно быть неправильное поведение в tinymce.

Но я не могу предоставить "исправление", потому что это не происходит с моим IE8 (Win7).
Какова ваша среда?

...