문제

jQuery를 사용하고 있으며 캐럿의 픽셀 좌표를 가져오는 크로스 브라우저 방법을 찾으려고 합니다. <textarea>모래 input 이 위치 주위에 절대 위치에 div를 배치할 수 있는 상자입니다.

jQuery 플러그인이 있나요?아니면 JavaScript 조각으로 이를 수행할 수 있나요?

도움이 되었습니까?

해결책

나는 텍스트 영역 캐럿 좌표 플러그인을 찾았습니다. 유성 자동 완성, 그래서 GitHub의 플러그인 8개를 모두 평가했습니다.승자는 현재까지, 텍스트 영역 캐럿 위치 ~에서 요소.

특징

  • 픽셀 정밀도
  • 전혀 종속성이 없습니다
  • 브라우저 호환성:크롬, 사파리, 파이어폭스(그럼에도 불구하고) 버그 있음), IE9+;작동할 수 있지만 Opera, IE8 이하에서는 테스트되지 않았습니다.
  • 모든 글꼴 계열과 크기는 물론 텍스트 변환도 지원합니다.
  • 텍스트 영역에는 임의의 패딩이나 테두리가 있을 수 있습니다.
  • 텍스트 영역의 가로 또는 세로 스크롤 막대로 혼동되지 않음
  • 텍스트에서 하드 리턴, 탭(IE 제외) 및 연속 공백을 지원합니다.
  • 텍스트 영역의 열보다 긴 줄의 올바른 위치
  • 아니요 빈 공간의 "유령" 위치 긴 단어를 줄바꿈할 때 줄 끝에서

여기 데모가 있습니다 - http://jsfiddle.net/dandv/aFPA7/

enter image description here

작동 원리

거울 <div> 화면 밖에서 생성되고 스타일이 정확하게 지정됩니다. <textarea>.그런 다음 캐럿까지의 텍스트 영역 텍스트가 div에 복사되고 <span> 바로 뒤에 삽입됩니다.그런 다음 가짜 div의 래핑을 충실하게 재현하기 위해 범위의 텍스트 내용이 텍스트 영역의 나머지 텍스트로 설정됩니다.

이는 긴 줄 래핑과 관련된 모든 극단적인 경우를 처리하도록 보장되는 유일한 방법입니다.또한 GitHub에서 해당 위치를 결정하는 데 사용됩니다. @ 사용자 드롭다운.

다른 팁

모든 브라우저에서 할 수있는 것은 아닙니다.누군가 IE6에서 해냈지만 FF 나 Opera (AFAIK)에서는 작동하지 않습니다.모든 브라우저에서 작동하도록 할 수 있습니다.

다음은 블로그 게시물입니다.2005 년 .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top