2009-10-22 7 views

Répondre

0

-je utiliser mon propre optimisation des algorithmes IERange, qui fournit une enveloppe autour de TextRange d'IE (qui est ce que vous obtenez de la sélection dans IE) pour leur donner la même interface que DOM Ranges.

Pour obtenir la sélection dans le document, utilisez quelque chose comme ce qui suit:

var sel = window.getSelection(); // Provided by IERange in IE, built-in in other browsers 
var range = sel.getRangeAt(0); // Note this doesn't work in Safari 2 

range a maintenant des propriétés startContainer et startOffset, qui sont respectivement une référence à un noeud et un décalage dans ce nœud qui représentent la début de la sélection, et les propriétés correspondantes endContainer et endOffset qui représentent la fin de la sélection.

+0

ça a marché .. merci beaucoup. – kakopappa

0

Vous pouvez trouver des réponses dans cette quirksmode post:

+0

Bonjour, Nous vous remercions de votre réponse rapide. Problème ici est que lorsqu'un utilisateur sélectionne un fragment de texte sur un span particulier (étiquette asp.net), je dois obtenir le début et la fin sélectionnés? Y at-il de toute façon que je puisse faire ça? – kakopappa

1

avoir un essai sur ce point:

var span = document.getElementById('span1'); 
    if (document.selection) { //IE 
     var bm = document.selection.createRange().getBookmark(); 
     var sel = span.createTextRange(); 
     sel.moveToBookmark(bm); 

     var sleft = span.createTextRange(); 
     sleft.collapse(true); 
     sleft.setEndPoint("EndToStart", sel); 
     span.selectionStart = sleft.text.length 
     span.selectionEnd = sleft.text.length + sel.text.length; 
     span.selectedText = sel.text; 
    } 
    else if (span.selectionStart){ //FF 
    span.selectedText = span.substring(span.selectionStart,span.selectionEnd); 
    } 

    alert("Selection Start==> " + span.selectionStart + "\n" + 
    "Selection End ==> " + span.selectionEnd + "\n" + 
    "Selected Text ==> " + span.selectedText + "\n" + 
    "TextArea Value ==> " + span.value); 
+0

Merci, mais span.createTextRange(); donne une erreur il ne prend en charge que la zone de texte – kakopappa

+0

. Utilisez à la place createRange(). – jerjer