user3047765
user3047765

Reputation: 213

window.getSelection() of textarea not working in firefox?

I am trying to get selection text on HTML page.

I use below code, and window.getSelection() on textarea seams not work in firefox, but works fine in Google Chrome.

Here is a sample: http://jsfiddle.net/AVLCY/

HTML:

<div>Text in div</div>
<textarea>Hello textarea</textarea>
<div id='debug'></div>

JS:

$(document).on('mouseup','body',function(){
   $("#debug").html("You select '" + getSelectionText() + "'");
});

function getSelectionText() {
    if (window.getSelection) {
        try {
            // return "" in firefox
            return window.getSelection().toString();
        } catch (e) {
            console.log('Cant get selection text')
        }
    } 
    // For IE
    if (document.selection && document.selection.type != "Control") {
        return document.selection.createRange().text;
    }
}

Upvotes: 18

Views: 15872

Answers (2)

Dan
Dan

Reputation: 539

It's late 2022 and Firefox still has this weird bug. I went to the original Bug Report on BugZilla to get more info about this and found a workaround (kindly shared by user daniel.lee1ibm):

    //Workaround for Firefox bug 
    const selectedText = document.activeElement.value.substring(
        document.activeElement.selectionStart,
        document.activeElement.selectionEnd
      )

Upvotes: 2

John Karahalis
John Karahalis

Reputation: 3431

It appears getSelection does not work on text selected in form fields due to this Firefox bug.

As explained in this answer, the workaround is to use selectionStart and selectionEnd instead.

Here is a modified example that works correctly:

http://jsfiddle.net/AVLCY/1/

Upvotes: 23

Related Questions