имитировать клавиши курсора (влево, вправо, вниз, стрелки вверх) в редактируемом содержимом div?

Можно ли имитировать клавиши со стрелками на редактируемом содержимом div? Я попытался запустить события «нажатия клавиш», но кажется, что contenteditable их игнорирует. (Мне просто нужно решение webkit / safari)

Мне просто нужно переместить курсор внутри div, как это делают клавиши со стрелками, но программно.

Возможно, вам поможет библиотека Rangy от Тима Дауна?

Спасибо!


person user1322373    schedule 09.04.2012    source источник
comment
есть возможность jquery?   -  person RestingRobot    schedule 09.04.2012


Ответы (1)


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

В таком случае вам придется делать это вручную, что сложно. Клавиши со стрелками работают с видимым текстом на странице, что означает, что вам нужно учитывать такие вещи, как свернутые пробелы, подразумеваемые разрывы строк от <br> и блочных элементов, элементы, скрытые с помощью свойства CSS display, и многие другие тонкости. Кроме того, имитация клавиш со стрелками вверх и вниз зависит от получения точных пиксельных координат произвольных символов на странице, что нетривиально в большинстве браузеров.

Я работаю над средством навигации по видимому тексту на странице в Rangy, которое поможет имитировать клавиши со стрелками влево и вправо, но Rangy не может помочь с клавишами со стрелками вверх и вниз.

person Tim Down    schedule 09.04.2012
comment
Большое спасибо, Тим, это кажется немного сложнее, чем я думал, в любом случае имитация клавиш со стрелками влево и вправо мне подходит, пожалуйста, дайте мне знать, когда у вас будет что проверить;) - person user1322373; 13.04.2012
comment
Привет, Тим, есть новости по этому поводу? Я могу перемещаться влево и вправо с помощью rangy, но когда курсор находит узел BR, останавливается и не переходит к следующей строке. любая помощь по этому поводу? - person user1322373; 12.05.2012
comment
@ user1322373: Все еще работаю над этим и близок к завершению. Должен выпустить первую версию в ближайшие пару недель. Я буду размещать здесь новости: groups.google.com/group/rangy/topics - person Tim Down; 12.05.2012