scrollHeightを使ったテキストエリア自動リサイズいいね

↓これを見て。

今までこれを使っていて、リターンによる改行じゃなくて折り返して複数行になる場合はリサイズしてくれないのが残念だったのだけど、上のやつならそれも大丈夫。

というわけでブックマークレットにした。使いたいときだけ使えれば十分だと思うので。

javascript:[].forEach.call(
  document.getElementsByTagName('textarea'),
  function(e){
    e.style.overflowY='hidden';
    var h=parseFloat(getComputedStyle(e,null).height);
    function f(){
      var k=e.scrollHeight+30;
      e.style.height=((h<k)?k:h)+'px'
    };
    f();
    document.addEventListener('input',f,false);
  }
)

Opera でしか試してないけど、Firefox でも動くような気がする。(元記事で this.style.height = "0px"; が入ってるのは何かのハックなのかな? それが無いのでおかしなことになるかも)コメント欄参照。

Safari では確か TEXTAREA で input イベントが出なかったような気がするので無理だと思う。keydown に変えたらいけるかも。

IE? なにそれ。



ブックマークレット実行時にもリサイズするように修正。
思うように動いてなかったので修正。