日記
String.replace(/\n/g, '<br />')の挙動の違いEdit

↑の2番目の機能を実現するために、Ajaxで取ってきたメモのJSONデータ中に含まれるプレーンテキスト形式のコメント本文を、

comment.escapeHTML().replace(/\n/g, '<br />')

してからinnerHTMLにセットしているんだけど(escapeHTML()はprototype.jsの拡張ね)、FirefoxとOperaでは想定通り表示されるのに、IEではなぜか連続した改行が1個の<br />になってしまい、空行が表現できていない模様。これって何が原因なんだ?

String.escapeHTML()のせいだった

IEでString.escapeHTML()した段階で、連続改行が消えてしまうらしい。確かprototype.jsのesacpeHTML処理ってブラウザ依存の特殊な書き方だった気がするし、そのせいだろうな。

というわけで、自前で置換を使ったescapeHTML()相当の処理に書き直して対応。ただ、非Windows環境ではまた別の問題が出るのかも?

Published At2006-08-23 00:00Updated At2006-08-23 00:00