2006-05-26
_ Ajax を使った tDiary のプレビュー表示プラグイン(2)
category_to_tag で表示されるタグ少し見やすくを書いてる途中に,プレビュー表示を見ていたら,どうも本文中にセミコロン (;) が入っていると,そこでとぎれてしまうようです.
んー,テスト不足だったな.とりあえず, livehttpheader で送信されている POST 要求をキャプチャ.プレビュー表示プラグインではセミコロンが encode されずにそのまま送信されているけど,通常のプレビューボタンを用いた場合は,セミコロンも encode されている.
調べてみると,フォームの区切り文字に「&」の代用として「;」をサポートすることが推奨されている (via:Namazu-devel-ja 676] URI属性値のセミコロン記号) ようで,このためセミコロンをそのまま送信すると,そこで本文が区切られてしまっていたのが原因でした.
で,Javascript には URI エンコードを行うメソッドとして,escape(),encodeURI(),encodeURIComponent() の 3 種類があり,それぞれエンコード対象の文字列が異なるようです.(escape() は古いメソッドでおすすめできないらしい)
PHP と JS の URI エンコード比較に,このあたりのことが詳しくかかれていて参考になりました.結局,Javascript でセミコロンを URI エンコードしたい場合は,これまで encodeURI() を使っていたのですが,必要に応じて encodeURIComponent() を使う必要があるみたいです.
というわけで,この部分を修正したのでご利用の方は入れ替えをお願いします.
- realtime-preview.rb(タグ生成プラグイン共存版)
- realtime-preview-with-xmlhttprequest.rb(単体動作版)
これでセミコロンが本文中に入っていても大丈夫なはず.
[ツッコミを入れる]
- Firefox をインストールしたらまず行う設定(Firefox 2.0 版) - SmallStyle (2006-10-25)
- SmallStyle - Firefox をインストールしたらまず行う設定(Firefox 2.0 版)
- SmallStyle - Debian に Plagger をインストール
- Lightbox JS を使って画像表示をかっこよくみせてみる�� - SmallStyle (2006-01-03)
- SmallStyle - Plagger::Plugin::Filter::FetchNicoVideo でニコニコ動画(SP1) H.264 形式対応
- SmallStyle - YAML のための vim 設定メモ
- SmallStyle - Filter::EntryFullText の設定ファイルを書いてみる
- SmallStyle - Java Service Wrapper を使って NicoCache をWindows サービスとして登録する
- SmallStyle - Stylish でユーザスタイルシートの切り替えを手軽に , 仕事納め
- category プラグインを利用した タグクラウド 表示プラグイン - SmallStyle (2006-05-23)