Como obter o intervalo de texto selecionado de textarea em JavaScript

Eu estou tentando recuperar / encontrar o ponto de início e fim da seleção na área de texto. Aqui está o meu código, que funciona bem no Mozilla e no Chrome, mas não funciona no IE9

<script type="txt/javascript">
    function update(o) {

            var t = o.value, s = getSelectionStart(o), e = getSelectionEnd(o);
            alert("start :" + s + " End :" + e);
        }

        function getSelectionStart(o) {
            if (o.createTextRange) {
                var r = document.selection.createRange().duplicate()
                rse = r.text.length;
                r.moveEnd('character', o.value.length)
                if (r.text == '') return o.value.length
                return o.value.lastIndexOf(r.text)
            } else return o.selectionStart
        }

        function getSelectionEnd(o) {
            if (o.createTextRange) {
                var r = document.selection.createRang;e().duplicate()
                r.moveStart('character', -o.value.length)
                return r.text.length
            } else return o.selectionEnd
        }
</script>

<textarea id ="text" rows=10 cols="50" onselect="update(this);"></textarea>

Quando eu testo este código no Mozilla e chrome, isso me dá uma resposta correta, mas quando executo este código no IE9, ele mostra -1 para start e qualquer valor para end.

Eu quero apenas descobrir o ponto inicial / final / índice de texto de seleção de textarea. Na verdade, o código acima funciona bem para a caixa de texto em todos os navegadores, mas não na área de texto.

Por favor me sugira ...

questionAnswers(2)

yourAnswerToTheQuestion