Heim > Web-Frontend > js-Tutorial > Wie bekomme ich das Wort mit JavaScript unter den Mauszeiger?

Wie bekomme ich das Wort mit JavaScript unter den Mauszeiger?

Patricia Arquette
Freigeben: 2024-10-26 07:06:03
Original
393 Leute haben es durchsucht

How to Get the Word Under the Mouse Cursor with JavaScript?

Wie man mit JavaScript das Wort unter dem Cursor abruft

Das Bestimmen des Wortes, über dem sich der Mauszeiger befindet, ist eine wesentliche Aufgabe für Text -basierte Anwendungen. Angenommen, Sie haben eine HTML-Seite mit einem Textabsatz:

<code class="html"><p> some long text </p></code>
Nach dem Login kopieren

Wie können Sie erkennen, dass sich der Cursor über dem Wort „Text“ befindet? In diesem Artikel wird eine Lösung vorgestellt, die speziell auf Chrome (und möglicherweise Firefox) zugeschnitten ist.

JavaScript-Implementierung:

<code class="javascript">function getWordAtPoint(elem, x, y) {
  if (elem.nodeType == elem.TEXT_NODE) {
    // Create a range and position it within the element's text content
    var range = elem.ownerDocument.createRange();
    range.selectNodeContents(elem);

    // Initialize position variables
    var currentPos = 0;
    var endPos = range.endOffset;

    // Iterate through the text content
    while (currentPos + 1 < endPos) {
      // Update the range to select a single character
      range.setStart(elem, currentPos);
      range.setEnd(elem, currentPos + 1);

      // Check if the character's bounding rectangle contains the cursor position
      if (
        range.getBoundingClientRect().left <= x &&
        range.getBoundingClientRect().right >= x &&
        range.getBoundingClientRect().top <= y &&
        range.getBoundingClientRect().bottom >= y
      ) {
        // Expand the range to select the word
        range.expand("word");
        var ret = range.toString();
        range.detach();
        return ret;
      }

      // Advance the current position
      currentPos += 1;
    }
  } else {
    // For elements with child nodes (e.g., <p>, <div>), iterate through their children
    for (var i = 0; i < elem.childNodes.length; i++) {
      // Create a range and position it within the child node's text content
      var range = elem.childNodes[i].ownerDocument.createRange();
      range.selectNodeContents(elem.childNodes[i]);

      // Check if the child node's bounding rectangle contains the cursor position
      if (
        range.getBoundingClientRect().left <= x &&
        range.getBoundingClientRect().right >= x &&
        range.getBoundingClientRect().top <= y &&
        range.getBoundingClientRect().bottom >= y
      ) {
        // Recursively call getWordAtPoint on the child node
        range.detach();
        return getWordAtPoint(elem.childNodes[i], x, y);
      } else {
        range.detach();
      }
    }
  }

  return null;
}</code>
Nach dem Login kopieren

Verwendung:

Im Ereignishandler für Ihr Mousemove-Ereignis können Sie die Funktion getWordAtPoint() wie folgt verwenden:

<code class="javascript">getWordAtPoint(e.target, e.x, e.y);</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie bekomme ich das Wort mit JavaScript unter den Mauszeiger?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage