Определяне на позицията на курсора в обекта TEXTAREA - Стаята за пушачи е жива и ще живее

Здравейте скъпи читатели на моя блог. В тази публикация бих искал да споделя с вас функция на браузър, javascript, която ви позволява да определите позицията на курсора в ред текст в обект TEXTAREA. И също така да разберете: "как работи тази функция?"

Като начало тази функция е тествана и работи правилно в браузърите: Firefox 3.0.7, Safari 3.1.2, Google Chrome 1.0.154.53, Internet Explorer 7 и Opera 9.6, под Windows Vista. Както е при другите, ми е трудно да кажа, но изглежда, че не трябва да възникват проблеми. В основата си тази функция са "патерици", които работят въз основа на определяне на позицията на избраната част от текста. Може би има друго решение, но аз не го знам.

Както и да е, за да работим и разберем функцията, се нуждаем от обект textarea и бутон, който ще извика функцията с изхода на резултата в прозореца alert () .


textarea ')) "type =" button "value =" Position ">

ще обясня: позицията на курсора се връща от функцията getCaretPos (), на която предаваме идентификатора на обекта textarea; тази стойност се показва в прозореца за предупреждение () при щракване върху бутона (събитие onclick).

Сега кодът на самата функция:

функция getCaretPos (objName) var обект = document.getElementById (objName);
обект.фокус ();
ако (document.selection) < // IE
var sel = document.selection.createRange ();
var clone = sel.duplicate ();
sel.collapse (вярно);
clone.moveToElementText (обект);
clone.setEndPoint ('EndToEnd', sel);