클릭 한 캐릭터에서 가져온 위치로 가짜 커서 이동

jcubic

고정 폭 글꼴을 사용하는 텍스트가있는 div가 있고 클릭 한 위치에 커서를 표시해야합니다. 커서로 텍스트를 표시하는 기능이 있습니다.

  function draw() {
    var text = textarea.val();
    var html;
    if (pos == text.length) {
      html = encode(text) + '<span class="cursor">&nbsp;</span>';
    } else {
      html = encode(text.slice(0, pos)) + '<span class="cursor">' +
        encode(text[pos+1]) + '</span>' + encode(text.slice(pos+1));
    }
    output.html(html);
  }

마우스 이벤트의 x / y 좌표를 기반으로 커서 위치를 가져 오는 함수 :

function get_char_pos(div, text, event) {
  var num_chars = get_num_chars(div);
  var cursor = div.find('.cursor');
  var rect = cursor[0].getBoundingClientRect();
  var width = rect.width;
  var height = rect.height;
  var offset = div.offset();
  var col = Math.floor((event.pageX-offset.left)/width);
  var row = Math.floor((event.pageY-offset.top)/height);
  var try_pos = col + (row > 0 ? num_chars * row : 0);
  return try_pos;
}

텍스트에 탭이 포함 된 경우를 제외하고는 거의 작동합니다 (인코딩 기능에 의해 탭이 4 개의 공백으로 대체 됨). 나는 이것을 사용하여 탭을 수정하려고했습니다.

  var before = text.slice(0, try_pos);
  var tabs = before.match(/\t/g);
  var fix = tabs ? tabs * 3 : 0;
  try_pos += fix;
  return try_pos > text.length ? text.lenght : try_pos;

그러나 이것은 작동하지 않습니다. 탭의 일부일 수있는 공간을 클릭 할 때도 작동합니다. 텍스트에 탭이 포함 된 경우 문제를 해결하는 방법은 무엇입니까?

다음은 codepen 데모입니다.

펠릭스

탭 문자가 문제입니다. 단일 문자로 text.slice에서 4 자로 계산되지 않는 문자열을 의미합니다. \ t를 공백 4 개로 바꾸면 문제가 해결됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Linux Bash : 터미널 커서 위치를 가져온 후 이상한 동작

분류에서Dev

동적으로 이전 요소를 가져온 다음 jQuery에서 클릭

분류에서Dev

GridView에서 클릭 한 항목의 위치 가져 오기

분류에서Dev

Recycler View에서 클릭 한 항목의 위치 가져 오기

분류에서Dev

커서 어댑터에서 클릭 가능한 여러 옵션

분류에서Dev

전체 달력에서 클릭 한 날짜 가져 오기

분류에서Dev

동일한 행에서 다른 셀 데이터를 클릭하여 셀 데이터 가져 오기

분류에서Dev

jQuery 클릭 한 div에서 가져온 ID를 사용하는 방법

분류에서Dev

DPAD에서 마우스를 가져 가면 캐릭터가 한 방향으로 무한히 움직입니다.

분류에서Dev

동일한 링크 클릭에서 다른 ID 가져 오기

분류에서Dev

jQuery에서 클릭 한 후 데이터 요소 값 가져 오기

분류에서Dev

요소의 클릭 가능 영역이 Ipad Safari의 실제 위치에서 위로 이동했습니다.

분류에서Dev

날짜 목록에서 클릭 가능한 날짜

분류에서Dev

IE11에서 한 번의 클릭으로 HTML의 앵커 태그가 작동하지 않음

분류에서Dev

IE11에서 한 번의 클릭으로 HTML의 앵커 태그가 작동하지 않음

분류에서Dev

메뉴 버튼을 클릭하여 한 페이지로 돌아가서 위치로 스크롤하십시오.

분류에서Dev

"마우스 가운데 클릭"붙여 넣기를 마우스 커서가있는 정확한 위치에

분류에서Dev

가져온 클래스에서 PyQt5 버튼 클릭이 작동하지 않음

분류에서Dev

클릭시 jquery에서 동일한 클래스로 다음 요소 가져 오기

분류에서Dev

JNA / WinAPI. 마우스 클릭을 시뮬레이션하면 마우스 커서가 이동하고 시작 위치로 돌아 가지 않습니다.

분류에서Dev

Excel 내에서 클릭 가능한 앵커 링크 설정

분류에서Dev

iOS에서 동적으로 선택한 캐릭터 강조

분류에서Dev

상황에 맞는 메뉴 동작에서 오른쪽 클릭 이벤트의 위치 가져 오기

분류에서Dev

div 내에서 클릭 가능한 이미지를 가로로 가운데에 배치

분류에서Dev

버튼 클릭시 Textbox에서 GridView로 데이터 추가

분류에서Dev

사용자가 클릭 한 위치에 마커가 생성 된 Android Google지도 활동

분류에서Dev

클릭 할 때 recyclerview 항목 및 하위 항목을 변경하고 조각에서 클릭 한 위치의 데이터를 가져 오는 방법은 무엇입니까?

분류에서Dev

가운데 마우스 버튼으로 클릭 할 때 Chrome이 동일한 탭에서 앵커 링크를 열지 못하도록 방지

분류에서Dev

카운터 클릭에서 동일한 계산으로 두 개의 div 앞에 추가

Related 관련 기사

  1. 1

    Linux Bash : 터미널 커서 위치를 가져온 후 이상한 동작

  2. 2

    동적으로 이전 요소를 가져온 다음 jQuery에서 클릭

  3. 3

    GridView에서 클릭 한 항목의 위치 가져 오기

  4. 4

    Recycler View에서 클릭 한 항목의 위치 가져 오기

  5. 5

    커서 어댑터에서 클릭 가능한 여러 옵션

  6. 6

    전체 달력에서 클릭 한 날짜 가져 오기

  7. 7

    동일한 행에서 다른 셀 데이터를 클릭하여 셀 데이터 가져 오기

  8. 8

    jQuery 클릭 한 div에서 가져온 ID를 사용하는 방법

  9. 9

    DPAD에서 마우스를 가져 가면 캐릭터가 한 방향으로 무한히 움직입니다.

  10. 10

    동일한 링크 클릭에서 다른 ID 가져 오기

  11. 11

    jQuery에서 클릭 한 후 데이터 요소 값 가져 오기

  12. 12

    요소의 클릭 가능 영역이 Ipad Safari의 실제 위치에서 위로 이동했습니다.

  13. 13

    날짜 목록에서 클릭 가능한 날짜

  14. 14

    IE11에서 한 번의 클릭으로 HTML의 앵커 태그가 작동하지 않음

  15. 15

    IE11에서 한 번의 클릭으로 HTML의 앵커 태그가 작동하지 않음

  16. 16

    메뉴 버튼을 클릭하여 한 페이지로 돌아가서 위치로 스크롤하십시오.

  17. 17

    "마우스 가운데 클릭"붙여 넣기를 마우스 커서가있는 정확한 위치에

  18. 18

    가져온 클래스에서 PyQt5 버튼 클릭이 작동하지 않음

  19. 19

    클릭시 jquery에서 동일한 클래스로 다음 요소 가져 오기

  20. 20

    JNA / WinAPI. 마우스 클릭을 시뮬레이션하면 마우스 커서가 이동하고 시작 위치로 돌아 가지 않습니다.

  21. 21

    Excel 내에서 클릭 가능한 앵커 링크 설정

  22. 22

    iOS에서 동적으로 선택한 캐릭터 강조

  23. 23

    상황에 맞는 메뉴 동작에서 오른쪽 클릭 이벤트의 위치 가져 오기

  24. 24

    div 내에서 클릭 가능한 이미지를 가로로 가운데에 배치

  25. 25

    버튼 클릭시 Textbox에서 GridView로 데이터 추가

  26. 26

    사용자가 클릭 한 위치에 마커가 생성 된 Android Google지도 활동

  27. 27

    클릭 할 때 recyclerview 항목 및 하위 항목을 변경하고 조각에서 클릭 한 위치의 데이터를 가져 오는 방법은 무엇입니까?

  28. 28

    가운데 마우스 버튼으로 클릭 할 때 Chrome이 동일한 탭에서 앵커 링크를 열지 못하도록 방지

  29. 29

    카운터 클릭에서 동일한 계산으로 두 개의 div 앞에 추가

뜨겁다태그

보관