新入社員のフジタです。
私は今、大企業/大組織向けポータル・グループウェア「INSUITE」という製品の開発チームに所属しています。主に、お客様からの要望や新機能の開発に取り組んでいます。
「INSUITE」には一部の機能にテキスト入力フォームがあり、リッチテキストの入力にFCKEditor/CKEditorを採用しています。
今回は、そのテキストエディタモードの切り替えを行う機能にまつわる話です。
テキストのエディタモードを切り替える際、JavaScriptでテキストエリア内の文章をHTMLにエンコードしたり、デコードしたりしているのですが、IE9・IE10では、どういう訳か文章中の改行が消えてしまうのです。
〇実際の画面
調べた結果。
原因は、どうやらブラウザ毎のテキストエリアが持っている改行コードの違いによるものっぽい。
1 2 3 4 5 6 |
IE7 --- CR+LF IE8 --- CR+LF IE9 --- LF IE10 --- LF Firefox --- LF Chrome --- LF |
IEは他ブラウザと処理を分岐させ、”CR + LF”を置換するようにしていたのですが、IE9以降がLFになったため、改行がうまく置換できていなかった。。。
≪回避策≫
今回は、以下のようにコード修正をする予定。(JavaScript)
〇修正前
1 2 3 |
buf=buf.replace(/(^|\r\n)(\r\n)/mg,"$1<p> </p>$2"); if(BrowserDetect.browser!=="Explorer"){ buf=buf.replace(/(^|\n)(\n)/mg,"$1<p> </p>$2"); |
〇修正後
1 |
replace(/(^|\r?\n)(\r?\n)/mg,"$1<p> </p>$2"); |
この対応を行うことで解決できそうなことが分かりました!
IEのVersionによって動きが異なることを、身に染みて体験しました。
これからも、エンジニアが体験したこと・考えたことをブログで紹介していきます!
お楽しみに!