2009-02-24 8 views
3

Dans Firefox, vous pouvez simplement appeler:Existe-t-il un moyen d'obtenir le décalage du texte sélectionné dans une zone de saisie dans IE?

myInputTextField.selectionStart ou myInputTextField.selectionEnd

pour obtenir les premiers et derniers indices du texte sélectionné dans la zone de saisie.

Dans IE, je sais que vous pouvez appeler document.selection.createRange() pour manipuler un peu la sélection. Pour la vie de moi, cependant, je n'ai trouvé aucune valeur qui représente ce décalage de caractère dans la sélection.

Ai-je raté quelque chose? Est-il possible d'obtenir la même valeur dans IE?

Merci!

Alex

+0

Je crois que c'est un double de http://stackoverflow.com/questions/235411/is-there-an-internet-explorer-approved-substitut-pour-selectionstart-and-selectio/235582 –

Répondre

5

Une citation directe d'un previous response-a very similar question que vous obtiendrez une gamme de sélection:

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