Я подражаю текстовому редактору в своем проекте с пользовательским каретом, но собственным выбором. Есть ли способ определить, в каком направлении пользователь выбирает текст? Допустим, пользователь выбрал текст «hello world». Есть две возможности: он может начать с щелчка мышью по букве «d» и заканчивается буквой «h», или он может начинать с буквы «h» и заканчивать буквой «d». Есть ли простой способ, как отличить эти две ситуации? Спасибо.Определить направление выбора пользователя с помощью javascript
ответ
Старый вопрос, но я думал, что я хотел бы добавить простое решение:
var sel = getSelection(),
position = sel.anchorNode.compareDocumentPosition(sel.focusNode),
backward = false;
// position == 0 if nodes are the same
if (!position && sel.anchorOffset > sel.focusOffset ||
position === Node.DOCUMENT_POSITION_PRECEDING)
backward = true;
Node.compareDocumentPosition (MDN)
Насколько я знаю, нет никакого свойства или события, родного Javascript, который скажет вам направление. This site детали, как отслеживать направление мыши, вы можете настроить его на свои нужды.
По существу, до тех пор, пока вы можете получить позицию мыши (либо loc.pageX
, либо Y, или event.clientX
или Y), вы можете написать свои собственные функции для отслеживания направления, основанного на положении и времени.
В вашем случае вы, вероятно, захотите зафиксировать это, когда пользователь имеет текст «выбрано», то есть на событие mousedown
.
Спасибо, я боялся, что мне придется это сделать :) – Ondra
Возможно. https://stackoverflow.com/a/12652116/96100 –
@TimDown Уверен, что это возможно, и ссылка, которую я предоставил, имеет один подход. Там просто нет * native * function/property (например, window.mouseDirection), который дает вам; вам нужно создать собственный код, например, в вашем примере. – Igor
отслеживать MouseDown X offet, а затем MouseUp Х смещения, и результат показывает направление: (используя JQuery)
var textSelectionDirection = (function(){
var direction = '', mouseDownOffset = null;
function getDirection(e){
if(e.type == 'mousedown')
mouseDownOffset = e.clientX;
else if(e.type == 'mouseup'){
direction = e.clientX < mouseDownOffset ? 'left' : 'right';
console.log(direction);
}
}
return getDirection
})();
$(document).on('mousedown mouseup', textSelectionDirection);
В настоящее время это работает только с выбором мыши, а не с клавиатурой – vsync
Это должно работать:
function isBackwards(sel) {
var rg = document.createRange();
rg.setStart(sel.anchorNode, sel.anchorOffset);
rg.setEnd(sel.focusNode, sel.focusOffset);
return !rg.toString();
}
Примечание. Если вы разрешаете выбор только для разрывов и пробелов, вам необходимо изменить функцию выше, поскольку он возвратил бы true
в таком случае, несмотря ни на что.
Не работайте в одном текстовом узле. Работает только в том случае, если начальный и конечный узлы не совпадают. – Jordan
Я пытался найти решение, которое работает для меня на пару дней. Вот что я придумал, это будет работать с выбором одного диапазона:
var selection = window.getSelection();
var range = selection.getRangeAt(0);
var isSelectionDown = selection.focusNode === range.endContainer;
var isSelectionUp = selection.focusNode === range.startContainer;
Упор узел выбора всегда, когда пользователь отпускает кнопку мыши, но конечный диапазон и начать контейнеры изменяются в зависимости от направления.
Работает только в том случае, если выбор охватывает несколько узлов. Если не проблема, то можно свести к: 'var isReverse = selection.anchorNode! == selection.getRangeAt (0) .startContainer; ' – Pocketsand
- 1. Определить направление движения касания пользователя?
- 2. Как определить направление текста элемента с помощью Javascript?
- 3. Определить направление прокрутки с помощью Ionic Framework
- 4. Как определить направление пакета с помощью libpcap?
- 5. Javascript: Как определить направление рисования линии SVG?
- 6. Определить текущее направление div
- 7. JavaScript - функция выбора пользователя
- 8. Как определить направление движения?
- 9. Определить направление движения камеры?
- 10. Определить направление координат GPS
- 11. Определить направление компаса
- 12. определить направление вращения пальца
- 13. Определить направление кругового движения
- 14. раскраска изображения частично с помощью JavaScript на основе выбора пользователя
- 15. Изменение включает направление с javascript
- 16. JavaScript Предотвращение выбора текста пользователя
- 17. Как определить IP-адрес пользователя с помощью javascript?
- 18. Определить роль пользователя, установленный с помощью PHP, в Javascript
- 19. Поймайте направление пользователя через Просьбу
- 20. Как определить направление движения пальцев с помощью iPhone UITouch
- 21. Определить текущее языковое направление с помощью переводимого модуля SilverStripe
- 22. Как определить направление связного списка
- 23. Как определить направление вращения UIPickerView?
- 24. как определить направление движения пальцем?
- 25. Как определить направление жестов круга?
- 26. определить направление перетаскивания карты google
- 27. определить язык ввода пользователя javascript
- 28. Corona: Как определить направление объекта с физикой
- 29. Ограничение выбора пользователя с помощью mobiscroll 2.5.0
- 30. динамически обновлять страницу с помощью выбора пользователя?
Я не думаю, что объект выбора достаточно умен для этого. Вам придется записывать местоположения мыши и определять это самостоятельно. –
@Diodeus Сделайте так, чтобы он принял его. И (at) OP Попробуйте добавить пользовательские сеттеры и геттеры для этих действий, используя значения по умолчанию и добавив вычисления местоположения мыши тоже. – Relic
Возможно. https://stackoverflow.com/a/12652116/96100 –