"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > JavaScript를 사용하여 텍스트에서 클릭된 단어를 효율적으로 감지하는 방법은 무엇입니까?

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

2024년 11월 11일에 게시됨
검색:598

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);
});
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3