tags:

views:

57

answers:

3

Is there a javascript function that will allow me to capture the text that is currently highlighted with the cursor and store it in a variable? I've been trying document.selection.createRange().text but this hasn't been working. Are there any possible alternatives? Here's the code:

function moremagic(){
var output = document.selection.createRange();
alert("I Work!");}

When I run the function, it doesn't make it to the write statement so I know something is wrong.

A: 

Yep, you want window.getSelection.

byoogle
Oops, I forgot IE implements “document.selection” instead. So if you want cross-browser code, you need to branch.
byoogle
+1  A: 

Ungraciously stolen from another question:

function getSelectedText() {
    if (window.getSelection) {
        return window.getSelection();
    }
    else if (document.selection) {
        return document.selection.createRange().text;
    }
    return '';
}

Use this in a "onClick" function or whatever and it will return the selected text in almost any browser.

Organiccat
`window.getSelection()` will return a `Selection` object, not a string.
Tim Down
The way I read it, it's just for checking the return value for a browser check. One works in "all" browsers, the other works in IE ;)
Organiccat
I think you misunderstood. You're correct that it's checking for the existence of objects/functions before using them. The issue is that this function will return a `Selection` object in non-IE browsers and a string in IE. You need to call `toString()` on the `Selection` before returning.
Tim Down
A: 
function getSelectedText() {
    if (window.getSelection) {
        return "" + window.getSelection();
    } else if (document.selection && document.selection.createRange) {
        return document.selection.createRange().text;
    }
}
Tim Down