Поведение execCommand в IE: проблема перезаписи изображения в CLEditor - PullRequest
0 голосов
/ 20 ноября 2010

Я использую CLEditor на своем сайте, и я столкнулся с проблемой при использовании его с IE.Проблема заключается в следующем: когда вы вставляете изображение и помещаете его в редактор, а затем вставляете другое изображение, оно перезаписывает предыдущее.С Firefox он поместит новый рядом с предыдущим.Я связался с CLEditor, и он сказал мне, что это специфическая проблема браузера.Он попросил меня обойтись, проверив IE, а затем свернуть текущий диапазон до его конца, используя метод TextRange.collapse () после вставки изображения.Я пытался сделать это, но я не эксперт в Javascript, чтобы он работал.Мне нужна ваша помощь, чтобы все заработало.

Это код для вставки изображения в область редактора:

.bind(CLICK, function() {

  // Insert the image or link if a url was entered
  var $text = $popup.find(":text"),
    url = $.trim($text.val());
  if (url !== "")
    execCommand(editor, data.command, url, null, data.button);

  // Reset the text, hide the popup and set focus
  $text.val("http://");
  hidePopups();
  focus(editor);

});

1 Ответ

0 голосов
/ 27 ноября 2010

Это решение этой проблемы. Это займет три дня, потому что я не эксперт по JavaScript. Я надеюсь, что это поможет.

      .bind(CLICK, function() {

          // Insert the image or link if a url was entered
          var $text = $popup.find(":text"),
            url = $.trim($text.val());
          if (url !== "")
            execCommand(editor, data.command, url, null, data.button);

          // Reset the text, hide the popup and set focus
          $text.val("http://");
          hidePopups();
          if ($.browser.msie) {
    var editorvalue=editor.$frame[0].contentWindow;   
    var pos = editorvalue.document.body.innerHTML.length;
    var textRange = editorvalue.document.body.createTextRange();
    textRange.collapse(true);
    textRange.moveEnd("character", pos);
    textRange.moveStart("character", pos);
    textRange.select();


  }

          focus(editor);

        }); 
...