私はスタック オーバーフローのコメント UI がとても気に入っています。同じことを自分の Web サイトに実装することを検討しています。コードを調べたところ、ここでの主なツールはWMDであり、JQuery TextArea Resizerが補助的な役割を果たしているようです。
WMD は、クライアント側で Markdown を HTML に変換します。プレビューに役立つのでとてもいいのですが、それをサーバーに送信するときに問題が発生します。検証エラーが発生した場合 (たとえば、ユーザーがコメント フォームの他の部分に無効な電子メール アドレスを入力したか、名前を入力しなかったなど)、サーバーはエラー メッセージを含むフォームを再表示して応答します。フォーム フィールドは事前入力されています。サーバーが Markdown を見たことがないため、コメント テキストは Markdown ではなく HTML になりました。しかし、それはユーザーが入力していたものなので、Markdown にしたいと思います。
ここに何かアイデアはありますか?
私はさまざまなアイデアを検討しました:
- サーバー側でHTML から Markdown への変換を行います。このアイデアについてはそれほど興奮していません。Markdown から HTML を再び Markdown に変換するのはばかげているように思えます。ユーザーとして、ソフトウェアがテキスト/コードを再フォーマットするときはいつもイライラします。
- クライアント側の検証 (もちろん保持するサーバー側の検証を強化するため)。現在、コメントフォームでreCAPTCHAを使用していますが、合理的な方向のように思えます。つまり、少なくともreCAPTCHA部分をサーバーに投稿する必要があります。
- WMD を失い、MarkdownJ を使用してサーバー上で Markdown を HTML に変換します。プレビュー機能を実現するための他のメカニズムを探す必要がありますが、これは維持したいと考えています。
理想的には、テキストの Markdown バージョンを取得し、それを HTML に加えてサーバーに送信する方法があればよいのですが、それが実際に可能かどうかを知るには、私は JavaScript の専門家ではありません。
任意の提案をいただければ幸いです。