素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

テキストエリアにタブを入力できるようにする

追記:MacのFirebugのF12は、Dashboardにショートカットを取られていただけだった。F12の割り当てをはずすと普通に動作する。

(function() {
  const TAB_SPACE = "\t";
  var areas = document.getElementsByTagName('textarea');
  Array.forEach(areas,
  function(textarea) {
    textarea.addEventListener('keypress', onKeyPress, false);
  });
  function onKeyPress(e) {
    var textarea = e.target;
    if (e.keyCode == KeyEvent.DOM_VK_ESCAPE) {
      textarea.blur();
    } else if (e.keyCode == KeyEvent.DOM_VK_TAB && !e.shiftKey) {
      var {
        selectionStart: start,
        selectionEnd: end
      } = textarea;
      textarea.value = textarea.value.substr(0, start) + TAB_SPACE + textarea.value.substr(end);
      textarea.selectionStart = textarea.selectionEnd = start + TAB_SPACE.length;
      e.preventDefault();
    }
  }
})();

tabキーデフォルトの動作を消すので、とりあえずESCキーでテキストエリアを抜けられるようにした。
MacのFirebugはF12キーじゃコンソールを閉じれないようで、毎回マウスで閉じているのだけど不便。効率落ちる。