Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
906
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как получить пиксельные координаты (x, y) курсора в текстовых полях?
Я использую jQuery и пытаюсь найти кроссбраузерный способ получить пиксельные координаты каретки в полях <textarea> s и input таким образом, чтобы я мог разместить абсолютно позиционированный div вокруг этого местоположения.
Есть ли какой-нибудь плагин jQuery? Или JavaScript сниппет, чтобы сделать именно это?
Я искал плагин textarea caret coordinates для meteor-autocomplete, поэтому я оценил все 8 плагинов на GitHub. Победитель-это, безусловно, textarea-caret-position от компонента .
Особенности
- точностью до пиксела
- никаких зависимостей вообще
- совместимость с браузером: Chrome, Safari, Firefox (несмотря на две ошибки ), IE9+; может работать, но не тестируется в Opera, IE8 или более старых версиях
- поддерживает любое семейство шрифтов и размер, а также текстовые преобразования
- текстовая область может иметь произвольные отступы или границы
- не путайте горизонтальные и вертикальные полосы прокрутки в textarea
- поддерживает жесткие возвраты, табуляции (кроме IE) и последовательные пробелы в тексте
- правильное расположение строк длиннее столбцов в текстовой области
- no "ghost" позиция в пустом месте в конце строки при обертывании длинных слов
Вот вам демо- http://jsfiddle.net/dandv/aFPA7/
Как это работает
Зеркало <div> создается вне экрана и стилизовано точно так же, как <textarea> . Затем текст textarea до каретки копируется в div, а <span> вставляется сразу после него. Затем текстовое содержимое промежутка устанавливается на оставшуюся часть текста в textarea, чтобы точно воспроизвести обертку в искусственном div.
Это единственный метод, гарантирующий обработку всех крайних случаев, относящихся к обертыванию длинных линий. Он также используется GitHub для определения позиции своего выпадающего списка @ user.
Примечание: этот ответ описывает, как получить координаты символа text-cursor/caret. Чтобы найти pixel-co-ordinates, вам нужно будет расширить его еще больше.
Первое что нужно запомнить это то что курсор может находиться в трех состояниях
- обычный курсор вставки в определенном положении
- выделение текста с определенной ограниченной областью
- не активен: textarea не имеет фокуса. Не был использован.
Модель IE использует объект document.selection , из этого мы можем получить объект TextRange , который дает нам доступ к выделению и, следовательно, к позиции(позициям) курсора.
Модель FF/Opera использует удобные переменные [input].selectionStart и selectionEnd.
Обе модели представляют обычный активный курсор в виде выделения нулевой ширины, причем левая граница является позицией курсора.
Если поле ввода не имеет фокуса, вы можете обнаружить, что ни один из них не установлен. У меня был хороший успех со следующим кодом для вставки фрагмента текста в текущем местоположении курсора, а также замены текущего выделения, если оно присутствует. В зависимости от конкретного браузера, YMMV.
function insertAtCursor(myField, myValue) {
/* selecion model - ie */
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
}
/* field.selectionstart/end firefox */
else if (myField.selectionStart || myField.selectionStart == '0' ) {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos)
+ myValue
+ myField.value.substring(endPos, myField.value.length);
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
myField.focus();
}
// cursor not active/present
else {
myField.value += myValue;
}
Примечание об ошибке: ссылки не были правильно отмечены в верхнем пункте.
Объект выделения: http://msdn.microsoft.com/en-us/library/ms535869(VS.85).aspx
TextRange объект: http://msdn.microsoft.com/en-us/library/ms535872(VS.85).aspx
Я не думаю, что это можно сделать в каждом браузере. Кто-то сделал это в IE6, но это не работает в FF или Opera (AFAIK). Может быть, вы сможете заставить его работать во всех браузерах.
Вот запись в блоге от 2005 года .