JavaScript キャレット位置に文字を挿入する

http://oshiete.goo.ne.jp/qa/8007638.html
JavaScript テキストエリア内のカーソル位置に文字を入力する方法」

乱暴だが、Fxなら。てもとにIEが無い!後で勉強しよう
http://domes.lingua.heliohost.org/dom/intro-ranges1.html#section-1-5-2

<! DOCTYPE html>
<title></title>
<meta charset="UTF-8">

<body>
<textarea cols="60" rows="10">
あいうえお
かきくけこ
さしすせそ
</textarea>
<p>

<script>
var txa = document.querySelector ('textarea');
var btn = document.createElement ('input');
btn.type = 'button';

'abcdefghijklmnopqrstuvwxyz'
  .split ('')
  .map (function (c, b) {
    return (b = this.cloneNode (false), b.value = c, b);
  }, btn)
  .forEach (function (b) {
    this.appendChild (b);
  }, document.querySelector ('p'));

document.addEventListener ('click', function (v,e) {
  if (e=v.target, e.type == 'button')
    insertChar (e.value);
},false);

function insertChar (c) {
  var s = txa.selectionStart, v = txa.value;
  txa.value = v.substr(0, s) + c + v.substr(s, v.length);
  txa.focus ();
  txa.setSelectionRange(++s,s);
}

</script>