Я ищу javascript-решение для следующей проблемы. Я использую CKEditor на своем веб-сайте, но думаю, что это неактуально. Потому что я думаю, что это встроенная функция, а не функция CKEditor.
Я хочу отключить перемещение выделенного текста в редакторе. Пользователь должен иметь возможность перемещать выделенный текст в редакторе, это не может быть отключено.
Единственное, что я хотел бы отключить, - это перемещение выделения. Или лучше капля выделения.
1 ответ
Используйте событие ondrop
.
myEditor.ondrop = function preventDrop (e) {
e.preventDefault();
};
Но если отслеживание изменений - это то, что вам на самом деле нужно, нет необходимости предотвращать перетаскивание. Просто используйте событие ondrop
, чтобы отследить изменение. А для новых браузеров просто используйте oninput
. Это обнаружит изменения независимо от метода ввода.
ondragstart
- это логическое расширение, которое, безусловно, может повысить удобство использования. Вместо того, чтобы полностью отменять событие, может быть лучше просто установить cursor: no-drop
для editor
во время ondragover
и сбросить курсор во время ondragleave
. Таким образом, он дает пользователю визуальную подсказку о том, что падение недоступно, но не наносит вреда браузеру.
oninput
не похож на onchange
, который запускается, когда элемент управления теряет фокус. oninput
запускается каждый раз, когда значение изменяется, даже если он находится в фокусе. oninput
также отличается от событий onkey*
тем, что он не запускается, например, при нажатии клавиш со стрелками. И oninput
, и onchange
запускаются для удаления, но никогда не ondrop
. И ondragstart
не обязательно означает удаление. Если вы реализуете стек отмены, я бы использовал oninput
с постепенной деградацией. Чтобы просто показать изменения, используйте onchange
и алгоритм сравнения, такой как jsdiff Джона Ресига.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.