HTMLタグを使用してテキストをプレビューし、そのテキストをデータベースに保存する機能が必要です。XSSのセキュリティ上の理由から、データベースでHTMLを許可するのは良い考えではないことを私は知っています。これを達成する方法は何ですか?
私は、ソースコードをフォーマットできる、stackoverflowにあるものと同様の機能が必要です。ありがとう。
HTMLタグを使用してテキストをプレビューし、そのテキストをデータベースに保存する機能が必要です。XSSのセキュリティ上の理由から、データベースでHTMLを許可するのは良い考えではないことを私は知っています。これを達成する方法は何ですか?
私は、ソースコードをフォーマットできる、stackoverflowにあるものと同様の機能が必要です。ありがとう。
推奨される方法:
htmlページのフォームのjavascriptイベントリスナーを作成します。ajaxを介して入力をrailsアプリに送信します。ここで、入力がレンダリングされます(たとえば、後でデータベースからの出力をレンダリングするのと同じヘルパーによって)。
XSSを回避するには、 RedCloth/Textileなどのマークアップ言語を使用してください。また、ユーザーが入力/理解するのも簡単です。
あなたの要求された方法:
javascriptイベントリスナーを作成し、フォーム/入力の内容を別のdivに書き込みます。
必要なJavaScriptは、使用するライブラリ(PrototypeやjQueryなど)によって異なります。
例:
textarea 、、、<textarea id="text"></textarea>およびpreview area divを持つフォームがあり、 <div id="preview"></div>Prototypeを使用しているとします。
document.observe("dom:loaded", function() {
new Form.Element.Observer('text', 0.25,
function () {
$('preview').update($F('text'));
}
);
}
これにより、250ミリ秒ごとにテキストエリアの変更がチェックされ、その入力がプレビューdivにコピーされます。
実際には、で呼び出される関数内のコードが必要ですdocument.observe(で始まりnew Form.Element.Observer...ます。document.observeブラウザがDOMツリーの構築を完了した後にこのコードを呼び出します。
プレーンテキストでHTMLマークアップを実現する方法である、テキスタイルやマークダウンなどの使用を検討することもできます。