タグ

2011年6月21日のブックマーク (1件)

  • JavaScriptの HTMLエスケープ関数を 140字以内で書いてみる

    JavaScriptで動的にWebページの内容を書き換える場合に、文字列のHTMLエスケープをしたい時がある。具体的には、「& " ' < >」の5つを変換したい。 PHPならhtmlSpecialChars()、Railsならh()でよいが、JavaScriptにはHTMLエスケープ用の関数が用意されていないので自分で書く必要がある。 せっかくなので、Twitterでつぶやける文字数以内で書くことを目指してみる。 で、こうなった。 function h(s){return s.replace(/[&"'<>]/g,function(m){return"&"+["amp","quot","#039","lt","gt"]["&\"'<>".indexOf(m)]+";"})} 123文字。 意外と余裕だ。 クォーテーションのエスケープをしないでいいなら(HTML要素の属性値のHTMLエスケ

    hatest
    hatest 2011/06/21
    引数sがStringであることをチェックしてないから、{replace:function(){return "<script>"}}とかいうオブジェクト渡されたら終わるぞ