做可视化编辑的器的时候突然发现一个问题,原来在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,因为没有打印出任何东西,所以觉得没用,但看了这段代码,算是明白了!