>  기사  >  웹 프론트엔드  >  JavaScript를 사용하여 텍스트에서 클릭된 단어를 효율적으로 감지하는 방법은 무엇입니까?

JavaScript를 사용하여 텍스트에서 클릭된 단어를 효율적으로 감지하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-28 03:10:30960검색

How to Efficiently Detect Words Clicked on in Text with JavaScript?

JavaScript를 사용하여 텍스트에서 클릭한 단어 감지

사용자가 단어를 클릭하여 선택할 수 있는 JavaScript 스크립트를 생성할 때 다음 질문이 발생합니다. 발생: 어떻게 효율적이고 우아하게 이를 달성할 수 있습니까?

클래스 구문 분석을 사용한 장황한 방법

일반적이지만 지루한 접근 방식은 전체 HTML을 구문 분석하고 각 단어를 공백을 넣고 각 단어를 요소. 그런 다음 단어 클래스에 대한 클릭을 감지하기 위해 이벤트 리스너가 추가되고, 클릭된 단어는 $(this).innerHTML을 통해 획득됩니다. 이 방법은 효과가 있지만 성능과 미적 측면에서는 아쉬운 점이 많습니다.

클래스 구문 분석 없이 최적화된 솔루션

더 효율적이고 우아한 솔루션을 위해 다음을 고려하세요.

1단계: 선택 항목 캡처

window.getSelection()을 사용하여 사용자의 선택 항목을 캡처합니다.

2단계: 단어 경계 식별

선택 범위를 반복하여 공백을 피하면서 클릭한 단어의 시작점과 끝점을 결정합니다.

3단계: 클릭한 단어 검색

선택 범위 내에서 식별된 문자를 결합하여 클릭된 단어를 형성합니다.

구현 예

다음 JavaScript 코드는 이 솔루션의 실제 구현을 제공합니다.

$(".clickable").click(function (e) {
  s = window.getSelection();
  var range = s.getRangeAt(0);
  var node = s.anchorNode;

  // Find starting point
  while (range.toString().indexOf(' ') != 0) {
    range.setStart(node, (range.startOffset - 1));
  }
  range.setStart(node, range.startOffset + 1);

  // Find ending point
  do {
    range.setEnd(node, range.endOffset + 1);
  } while (
    range.toString().indexOf(' ') == -1 &&
    range.toString().trim() != ''
  );

  // Alert result
  var str = range.toString().trim();
  alert(str);
});

위 내용은 JavaScript를 사용하여 텍스트에서 클릭된 단어를 효율적으로 감지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.