Есть ли способ получить смещение выделенного текста в поле ввода в IE? - PullRequest
3 голосов
/ 25 февраля 2009

В Firefox вы можете просто позвонить:

myInputTextField.selectionStart или myInputTextField.selectionEnd

чтобы получить первый и последний индексы выделенного текста в поле ввода.

В IE я знаю, что вы можете вызвать document.selection.createRange (), чтобы немного поиграть с выбором. Однако за всю жизнь я не нашел ни одного значения, представляющего это смещение символа в выделении.

Я что-то упустил? Есть ли способ получить такое же значение в IE?

Спасибо!

Alex

Ответы [ 2 ]

5 голосов
/ 25 февраля 2009

Прямая цитата из предыдущего ответа на очень похожий вопрос , который даст вам диапазон выбора:

function getSelection(inputBox) {
        if ("selectionStart" in inputBox) {
                return {
                        start: inputBox.selectionStart,
                        end: inputBox.selectionEnd
                }
        }

        //and now, the blinkered IE way
        var bookmark = document.selection.createRange().getBookmark()
        var selection = inputBox.createTextRange()
        selection.moveToBookmark(bookmark)

        var before = inputBox.createTextRange()
        before.collapse(true)
        before.setEndPoint("EndToStart", selection)

        var beforeLength = before.text.length
        var selLength = selection.text.length

        return {
                start: beforeLength,
                end: beforeLength + selLength
        }
}
0 голосов
/ 23 июля 2009
  getSelectionOffset : function(argObject) {
   if (typeof(argObject.contentWindow.getSelection) != 'undefined') { //Moz
    return {
     start: argObject.contentWindow.getSelection().getRangeAt(0).selectionStart,
     end: argObject.contentWindow.getSelection().getRangeAt(0).selectionEnd
    }
   }
   if (document.selection && document.selection.createRange) { //IE
    var allText = argObject.contentWindow.document.selection.createRange().parentElement().innerText;
    var selText = argObject.contentWindow.document.selection.createRange().text;
    return {
     start: allText.indexOf(selText),
     end: allText.indexOf(selText) + selText.length 
    }
   }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...