以下是参考网上的资料,具体的网址现在没有找到,实现的功能类似于微博的发表窗口中在光标的焦点处插入文字

 
  
  1. var focus_tag = { first:function(area){ 
  2.           area.focus(); 
  3.           if (area == null) { 
  4.               area = event.srcElement; 
  5.           } 
  6.           if(document.selection){ 
  7.               var rtextRange = area.createTextRange(); 
  8.               rtextRange.moveStart('character', area.value.length); 
  9.               rtextRange.collapse(true); 
  10.               rtextRange.select(); 
  11.           } 
  12.     },getCursorPosition:function(textarea) { 
  13.             var rangeData = {text: "", start: 0, end: 0 }; 
  14.             textarea.focus(); 
  15.         if (textarea.setSelectionRange) { // W3C 
  16.             rangeData.start= textarea.selectionStart; 
  17.             rangeData.end = textarea.selectionEnd; 
  18.             rangeData.text = (rangeData.start != rangeData.end) ? textarea.value.substring(rangeData.start, rangeData.end): ""
  19.         } else if (document.selection) { // IE 
  20.             var i, 
  21.                 oS = document.selection.createRange(), 
  22.                 oR = document.body.createTextRange(); 
  23.             oR.moveToElementText(textarea); 
  24.          
  25.             rangeData.text = oS.text; 
  26.             rangeData.bookmark = oS.getBookmark(); 
  27.             for (i = 0; oR.compareEndPoints('StartToStart', oS) < 0 && oS.moveStart("character", -1) !== 0; i ++) { 
  28.                 if (textarea.value.charAt(i) == '\n') { 
  29.                     i ++; 
  30.                 } 
  31.             } 
  32.             rangeData.start = i; 
  33.             rangeData.end = rangeData.text.length + rangeData.start; 
  34.         } 
  35.          
  36.         return rangeData; 
  37.     }, setCursorPosition:function(textarea, rangeData) { 
  38.         if(!rangeData) { 
  39.             alert("You must get cursor position first."); 
  40.         } 
  41.         if (textarea.setSelectionRange ) { // W3C 
  42.             textarea.focus(); 
  43.             textarea.setSelectionRange(rangeData.start, rangeData.end); 
  44.         } else if (textarea.createTextRange) { // IE 
  45.             var oR = textarea.createTextRange(); 
  46.             if(textarea.value.length === rangeData.start) { 
  47.                 oR.collapse(false); 
  48.                 oR.select(); 
  49.             } else { 
  50.                 oR.moveToBookmark(rangeData.bookmark); 
  51.                 oR.select(); 
  52.             } 
  53.         } 
  54.     },add:function (textarea, rangeData,text) { 
  55.         var oValue, nValue, oR, sR, nStart, nEnd, st; 
  56.         this.setCursorPosition(textarea, rangeData); 
  57.         if (textarea.setSelectionRange) { // W3C 
  58.             oValue = textarea.value; 
  59.             nValue = oValue.substring(0, rangeData.start) + text + oValue.substring(rangeData.end); 
  60.             nStart = nEnd = rangeData.start + text.length; 
  61.             st = textarea.scrollTop; 
  62.             textarea.value = nValue; 
  63.             if(textarea.scrollTop != st) { 
  64.                 textarea.scrollTop = st; 
  65.             } 
  66.             textarea.setSelectionRange(nStart, nEnd); 
  67.         } else if (textarea.createTextRange) { // IE 
  68.             sR = document.selection.createRange(); 
  69.             sR.text = text; 
  70.             sR.setEndPoint('StartToEnd', sR); 
  71.             sR.select(); 
  72.         } 
  73.     }