Отключить автоматическое определение URL для элементов с флагом «contentEditable» в IE - PullRequest
5 голосов
/ 19 августа 2010

Когда я вставляю любой текст в любой элемент с включенным флагом 'contentEditable', IE автоматически находит гиперссылки или адрес электронной почты и заменяет их на

<a href="hyperlink">hyperlink</a>.

Как я могу отключить это автоматическое определение URL для элементов (например, div, span и т. Д.) С флагом 'contentEditable' в IE или, как минимум, получить фактический текст, который был вставлен в div.

С наилучшими пожеланиями,
Кешав

Ответы [ 3 ]

3 голосов
/ 27 сентября 2011

К сожалению, нет кросс-версии решения. В IE9 есть возможность отключить автоматическую гиперссылку:

document.execCommand("AutoUrlDetect", false, false);

Дополнительная информация: http://msdn.microsoft.com, http://bytes.com

1 голос
/ 19 августа 2010

Не думаю, что ты можешь.Вам нужно перехватить событие paste и установить короткий таймер, который вызывает функцию, которая удаляет ссылки.

Редактировать 30 сентября 2012 г.

IE 9 и вышевозможность выключить это.См. Ответ Максона.

0 голосов
/ 07 апреля 2017

Для предотвращения обнаружения URL-адреса я использую на кнопке пробела кнопки «deleteDefault», «клавишу ввода» и «событие нажатия клавиши табуляции». Протестировано на IE11 и Chrome.

document.getElementById("input").addEventListener("keydown", function (e) {
  var SPACEKEY = 32;
  var ENTERKEY = 13;
  var TABKEY = 9;

  var whiteSpace = "";

  if (e.keyCode == SPACEKEY || e.keyCode == ENTERKEY || e.keyCode == TABKEY) {
    e.preventDefault();

    if (e.keyCode == SPACEKEY) {
      whiteSpace = " ";
    } else if (e.keyCode == ENTERKEY) {
      whiteSpace = "\n";
    } else if (e.keyCode == TABKEY) {
      whiteSpace = "\t";
    }

    var selection = document.getSelection();
    var start = selection.anchorOffset > selection.focusOffset ? selection.focusOffset : selection.anchorOffset;
    var end = selection.anchorOffset > selection.focusOffset ? selection.anchorOffset : selection.focusOffset;

    $(this).text($(this).text().substring(0, start)
      + " "
      + $(this).text().substring(end));
    var range = document.createRange();
    range.setStart($(this)[0].firstChild, start + 1);
    range.setEnd($(this)[0].firstChild, start + 1);
    selection.removeAllRanges();
    selection.addRange(range);
  }
  return false;
});
...