HTMLエスケープ関数
いいライブラリがあるのかもしれないけど、今回のプロジェクトでは使えないので、自作。
function htmlEscape(str) { return str.replace(/<|>|&|'|"|\s/g, function(s){ var map = {"<":"<", ">":">", "&":"&", "'":"'", "\"":""", " ":" "}; return map[s]; }); }
上のだとすっきり書けるけど、無名関数辺りの最適化がどのように行われるか不明。なので、下のようにクロージャにして初期化を確実に1回に抑える方がより安心。
var htmlEscape = (function(){ var map = {"<":"<", ">":">", "&":"&", "'":"'", "\"":""", " ":" "}; var replaceStr = function(s){ return map[s]; }; return function(str) { return str.replace(/<|>|&|'|"|\s/g, replaceStr); }; })();