포커스 후 콘텐츠 편집 가능한 Div에서 커서 위치를 유지하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-10 00:37:02
원래의
481명이 탐색했습니다.

How to Keep the Cursor Position in a Content Editable Div After Focus?

ContentEditable <div>에서 커서 위치 설정

문제:

Content editable <div> 요소는 초점을 다시 얻을 때마다 커서 위치를 텍스트의 시작 부분으로 재설정하는 경향이 있습니다. 이는 커서를 이전 위치로 복원해야 하는 경우 바람직하지 않을 수 있습니다.

해결 방법:

이 문제를 해결하려면 다음과 같은 브라우저 간 솔루션을 사용할 수 있습니다.

1단계: 선택 항목 저장

이벤트 리스너(onmouseup 및 onkeyup)를 <div> 마우스 버튼을 놓거나 키를 놓을 때 현재 커서 위치(savedRange)를 캡처합니다.

2단계: 선택 복원

2단계( a): On Focus

이벤트 리스너(onfocus)를 <div> 이전에 저장된 선택 항목을 복원합니다.

2단계 (b): 클릭 시(선택 사항)

클릭 시 선택 항목을 유지하려면 추가 단계가 필요합니다.

  • 클릭 이벤트(cancelEvent())를 취소하는 onclick 및 onmousedown 이벤트 리스너를 등록합니다.
  • cancelEvent() 내부에서 저장된 선택 항목을 복원하고 isInFocus를 true로 설정합니다.
  • 흐림(onblur)에서는 isInFocus를 false로 설정합니다.

전체 코드(클릭 시 선택 복원 포함):

<div>
로그인 후 복사
var savedRange, isInFocus;

function saveSelection() {
  // ... (Selection saving logic as described in Step 1)
}

function restoreSelection() {
  isInFocus = true;
  document.getElementById("area").focus();

  if (savedRange != null) {
    // ... (Selection restoration logic as described in Step 2)
  }
}

function onDivBlur() {
  isInFocus = false;
}

function cancelEvent(e) {
  if (isInFocus === false && savedRange != null) {
    // ... (Event cancellation logic as described in Step 2 (b))
  }
}
로그인 후 복사

위 내용은 포커스 후 콘텐츠 편집 가능한 Div에서 커서 위치를 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿