Сообщение «Ошибка выполнения команды insertHtml» в cleditor при вставке html в режиме «Просмотр исходного кода» - PullRequest
2 голосов
/ 10 февраля 2012

Я искал решение для этого везде и не нашел ответа, так что ты моя последняя надежда, Stackoverflow ...

Что касается cleditor, кто-нибудь знает, как заставить работать команду "insertthtml" в режиме "Просмотр исходного кода"?

В настоящее время у меня есть метод, прикрепленный к обработчику нажатия кнопки, который вставляет строку в текстовое поле кредитора:

editor.focus();
setTimeout(function() { editor.execCommand('inserthtml', stringToInsert); }, 0);

Вышеописанное прекрасно работает в обычном режиме форматированного текста, но если вы попытаетесь выполнить его в режиме Просмотр источника , произойдет следующее:

  • В Firefox появляется небольшое сообщение «Ошибка выполнения команда insertthtml. "
  • В Chrome молча происходит сбой
  • в IE:
    • Если текстовое поле было пустым, я поставил точку останова в Visual Studio по адресу "y (a) .pasteHTML (c)" в том, что похоже на jquery.cleditor.min.js, со следующим сообщением "Ошибка времени выполнения Microsoft JScript : Ошибка не указана. "
    • Если текстовая область уже содержала текст, я столкнулся с точкой останова в точке «a.range [0] .select ()» в том же файле со следующим сообщением «Ошибка времени выполнения Microsoft JScript: не удалось завершить операцию из-за ошибки 800a025e. "

1 Ответ

0 голосов
/ 10 февраля 2012

Привет, я думаю, что это очень похожая проблема, так как здесь

Я предполагаю, что вставленный вами код выполняется в функции нажатия кнопки в конце этой функции, просто добавьте

return false;

добавить что-то подобное:

function someClick (e, data) {

    // Get the editor
    var editor = data.editor;

   editor.focus();
   setTimeout(function() { editor.execCommand('inserthtml', stringToInsert); }, 0);

   return false;

}

edit:

да, вы правы, это не так просто: когда вы находитесь в нормальном режиме, ваша текстовая область фактически iframe, когда вы находитесь в исходном режиме, ваша текстовая область снова становится текстовой, поэтому для редактирования данных внутри вы можете получить ее * 1018.*

$('#mytextarea').val()

, если вы хотите добавить что-либо в конце, вы можете использовать:

setTimeout(function() {$('#mytextarea').val($('#mytextarea').val()+'aaaaa') }, 3000);    

, если вы хотите вставить в текущем положении ursor, это должно помочь: Положение курсора в текстовой области(индекс символа, а не координаты х / у)

...