„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie erkennt man mit JavaScript effizient angeklickte Wörter im Text?

Wie erkennt man mit JavaScript effizient angeklickte Wörter im Text?

Veröffentlicht am 11.11.2024
Durchsuche:444

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

Angeklickte Wörter im Text mit JavaScript erkennen

Beim Erstellen eines JavaScript-Skripts, mit dem Benutzer Wörter auswählen können, indem sie darauf klicken, wird die Frage gestellt entsteht: Wie kann dies effizient und elegant erreicht werden?

Ausführliche Methode mit Klassenanalyse

Ein üblicher, aber langwieriger Ansatz besteht darin, den gesamten HTML-Code zu analysieren und jedes Wort durch getrennt aufzuteilen Leerzeichen und Umschließen jedes Worts in ein -Element. Anschließend wird ein Ereignis-Listener hinzugefügt, um Klicks auf die Wortklasse zu erkennen, und das angeklickte Wort wird über $(this).innerHTML abgerufen. Obwohl diese Methode funktioniert, lassen ihre Leistung und Ästhetik zu wünschen übrig.

Optimierte Lösung ohne Klassenanalyse

Bedenken Sie für eine effizientere und elegantere Lösung Folgendes:

Schritt 1: Auswahl erfassen

Verwenden Sie window.getSelection(), um die Auswahl des Benutzers zu erfassen.

Schritt 2: Wortgrenzen identifizieren

Durchlaufen Sie den Auswahlbereich, um die Start- und Endpunkte des angeklickten Worts zu bestimmen, und vermeiden Sie Leerzeichen.

Schritt 3: Das angeklickte Wort abrufen

Kombinieren Sie die identifizierten Zeichen innerhalb des Auswahlbereichs, um das angeklickte Wort zu bilden.

Beispielimplementierung

Der folgende JavaScript-Code bietet eine praktische Implementierung dieser Lösung:

$(".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);
});
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3