岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

HTMLエスケープ周りを修正

昨日に引き続き、Ajax部分を修正しました。

  1. prototype.jsのString.escapeHTML()でダブルクォートがエスケープされないのを知らず、A要素のhref属性値に渡してしまっていた
  2. document.titleにString.escapeHTML()の結果を渡してしまっていた

1番目はString.prototype.escapeHTML()の上書きで対処しました。これが良い方法かどうかは分かりませんが、要件は満たせているので、ふたたび気になるまでは気にしないことにします。

Object.extend(
    String.prototype, {
        escapeHTML: function() {
            var div = document.createElement('div');
            var text = document.createTextNode(this);
            div.appendChild(text);
            return div.innerHTML.replace(/"/g, '"');
        }
    }
);

2番目は簡単で、エスケープ前の文字列を渡すよう修正しました。勝手にエスケープされるとは知りませんでした。というか、ちゃんとテストしてからリリースしましょう>俺