【问题标题】:Is there a way to get the offset of the selected text within an input box in IE?有没有办法在 IE 的输入框中获取所选文本的偏移量?
【发布时间】:2009-02-24 22:08:20
【问题描述】:

在 Firefox 中,您可以简单地调用:

myInputTextField.selectionStart 或 myInputTextField.selectionEnd

获取输入框中所选文本的第一个和最后一个索引。

在 IE 中,我知道您可以调用 document.selection.createRange() 来稍微调整一下选择。然而,在我的一生中,我还没有找到任何代表所选内容中该字符偏移的值。

我错过了什么吗?有什么方法可以在 IE 中获得相同的值?

谢谢!

亚历克斯

【问题讨论】:

标签: javascript html internet-explorer web-applications


【解决方案1】:

previous responsea very similar question 的直接引用将为您提供选择范围:

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
        }
}

【讨论】:

    【解决方案2】:
      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 
        }
       }
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 2021-03-31
      • 2021-05-26
      相关资源
      最近更新 更多