做可视化编辑的器的时候突然发现一个问题,原来在TEXTAREA里面,FF的做法是:

        var rangeStart=textObj.selectionStart;  
        var rangeEnd=textObj.selectionEnd;  
        var tempStr1=textObj.value.substring(0,rangeStart);  
        var tempStr2=textObj.value.substring(rangeEnd);  
        textObj.value=tempStr1+textFeildValue+tempStr2;  
        textObj.focus();  
        var len=textFeildValue.length;  
        textObj.setSelectionRange(rangeStart+len,rangeStart+len);  
        textObj.blur(); 

textObj是文本域对象(节点),下面也一样,是iframe对象。textFeildValue是你要插入的文本.下面是ht.

但selectionStart和selectionEnd只是针对文本和input域的。现在是iframe。所以只能从新找个法子。结果某网友说在FCK里有很好的办法,试了一下,OK:

   var oSel = textObj.getSelection(); 
   var oRange = oSel.getRangeAt(0);
   var oFragment = oRange.createContextualFragment(ht) ;
   var oLastNode = oFragment.lastChild ;
   oRange.insertNode(oFragment) ;
   oRange.setEndAfter( oLastNode ) ;
   oRange.setStartAfter( oLastNode ) ;
   oSel.removeAllRanges() ;
   oSel = textObj.getSelection();
   oSel.addRange( oRange ) ;

之前用getRangeAt,因为没有打印出任何东西,所以觉得没用,但看了这段代码,算是明白了!

posted on 2009-02-12 18:05  Dacia  阅读(566)  评论(0编辑  收藏  举报