Get the Highlighted/Selected text

后端 未结 5 1551
無奈伤痛
無奈伤痛 2020-11-21 06:34

Is it possible to get the highlighted text in a paragraph of a website e.g. by using jQuery?

相关标签:
5条回答
  • 2020-11-21 07:16

    Getting the text the user has selected is relatively simple. There's no benefit to be gained by involving jQuery since you need nothing other than the window and document objects.

    function getSelectionText() {
        var text = "";
        if (window.getSelection) {
            text = window.getSelection().toString();
        } else if (document.selection && document.selection.type != "Control") {
            text = document.selection.createRange().text;
        }
        return text;
    }
    

    If you're interested in an implementation that will also deal with selections in <textarea> and texty <input> elements, you could use the following. Since it's now 2016 I'm omitting the code required for IE <= 8 support but I've posted stuff for that in many places on SO.

    function getSelectionText() {
        var text = "";
        var activeEl = document.activeElement;
        var activeElTagName = activeEl ? activeEl.tagName.toLowerCase() : null;
        if (
          (activeElTagName == "textarea") || (activeElTagName == "input" &&
          /^(?:text|search|password|tel|url)$/i.test(activeEl.type)) &&
          (typeof activeEl.selectionStart == "number")
        ) {
            text = activeEl.value.slice(activeEl.selectionStart, activeEl.selectionEnd);
        } else if (window.getSelection) {
            text = window.getSelection().toString();
        }
        return text;
    }
    
    document.onmouseup = document.onkeyup = document.onselectionchange = function() {
      document.getElementById("sel").value = getSelectionText();
    };
    Selection:
    <br>
    <textarea id="sel" rows="3" cols="50"></textarea>
    <p>Please select some text.</p>
    <input value="Some text in a text input">
    <br>
    <input type="search" value="Some text in a search input">
    <br>
    <input type="tel" value="4872349749823">
    <br>
    <textarea>Some text in a textarea</textarea>

    0 讨论(0)
  • 2020-11-21 07:19

    Yes you can do it with simple HMTL snippet:

    document.addEventListener('mouseup', event => {  
        if(window.getSelection().toString().length){
           let exactText = window.getSelection().toString();        
        }
    }
    
    0 讨论(0)
  • 2020-11-21 07:20

    Use window.getSelection().toString().

    You can read more on developer.mozilla.org

    0 讨论(0)
  • 2020-11-21 07:21

    This solution works if you're using chrome (can't verify other browsers) and if the text is located in the same DOM Element:

    window.getSelection().anchorNode.textContent.substring(
      window.getSelection().extentOffset, 
      window.getSelection().anchorOffset)
    
    0 讨论(0)
  • 2020-11-21 07:34

    Get highlighted text this way:

    window.getSelection().toString()
    

    and of course a special treatment for ie:

    document.selection.createRange().htmlText
    
    0 讨论(0)
提交回复
热议问题