BlogWrite と mt_convert_breaks 2005-08-27 (土) 00:00:00+09:00

ソフトウェア

しばらく静かといいつつナニなんだが、一件やっておかないといけなかった修正をした。

metaWeblog.newPost, editPost で mt_convert_breaks が 1/convert_breaks だった場合に、改行コードを p タグの組み合わせに変換するようにした。

それで気づいたが BlogWrite で本文を入力し自動改行にチェックを入れてみたところ色々と不思議な動作をする。

  1. 本文を手入力して、新規投稿のときチェックを入れて送信→「投稿&公開」ボタンを押した瞬間にチェックが自動で外れ、 mt_convert_breaks == '0' で送られる。
  2. 本文をテキストエディタからペーストして新規投稿として送信→ mt_convert_breaks == '1' で送られるが、 <br /> が付加された本文のままで送信するので、結果的に br タグの上に更に p タグが付いてしまう。
  3. 編集して再投稿するときチェックを入れて送信→ mt_convert_breaks == '1' で送られるが、 <p></p> が付加された本文のままで送信するので、結果的に p タグが重ねがけされてしまう。

1.に関しては、かならず自動改行OFFでしか送られないようにブロックしているようだ。本文入力中に既に p タグが入力されているから自動改行する必要なしとの判断をしているのだと思う。

2.に関しては、テキストエディタから本文に貼り付けたとき、連続して何か書かれている行末には <br /> が自動挿入され、段落間は p タグが自動挿入される(賢い!)のだが、その状態で自動改行オンにして新規投稿すると、こちらはなぜか強制OFFしないでそのまま送ってしまうので、結果的に改行が二重に効いてしまい間延びした文書になってしまう。既に改行のための処理をしてあるのだから、1.と仕様を合わせて自動改行をOFFにすべきではないか?

3.に関しては、既に投稿済みの文書なので、改行の処理は済んでいると思われるのに、自動改行ONのままで送信するので確実に二重に改行処理がほどこされてしまう。

検証して思ったが BlogWrite のように WYSIWYG 処理の都合上、編集画面上改行されているところは改行用のタグが挿入されているツールの場合、1.から3.いずれの場合も、自動改行は強制的にOFFのはずだ。「自動改行=改行コードを改行に相当するタグに置き換える」処理の意味が成立しないからだ。

もし自動改行ONのモードをもたせるとしたら、手入力で改行した位置と、エディタなどから貼り付けたテキストの改行の位置を内部で保持しておき、送信時にそれらを改行コードとして送信する必要がある。ただそれだと、 html とかを貼り付けられた場合には、タグを解析してどこが改行や段落なのかを把握する必要が生じる。解析して改行を管理するか、常に自動改行OFFか、どちらかに統一が必要な気がする。

[コメントの受付は終了しています ]
この記事のリンク元

キーワード: BlogWrite mt_convert_breaks