prototype.js の escapeHTML
prototype.js では String オブジェクトに escapeHTML, unescapeHTML などという function が追加されているわけなんだが、これがいまいち期待どおりの仕様じゃない。
ダブルクォート、シングルクォートをエスケープしてくれないので、innerHTML に入れるときにはいいんだけど、value とかのアトリビュートに入れるときに困る。
Perlで言うと
s/&/&/g; s/</</g; s/>/>/g; s/"/"/g;
の動作をして欲しい。
とりあえずやっつけ気味で
String.prototype.myEscapeHTML = function() { return this.escapeHTML().replace(/"/g, """).replace(/'/g, "'"); } String.prototype.myUnescapeHTML = function() { return this.escapeHTML().replace(/"/g, '"').replace(/'/g, "'"); }
とかしてみた。
あんまりかっこよくない・・・
他にいい方法があるのかな。