5

サーバーに値を送信し、HTML Purifier で値を浄化する summernote という wysiwyg を使用しています。その後、DB(mysql)に保存します。次に、精製された html を wysiwyg に戻す必要があるため、それを textarea 値として記述します (textarea は js で summernote にリンクされています)。ただし、書式設定されたテキストではなく、エスケープされた html が表示されます。エディタは正常に動作し、js コンソールにはエラーが表示されません。

summernoteの初期化に使用するJavascript

      $('.summernote').summernote({
      lang: 'cs-CZ',
      height: 100,
      airMode: true,
      prettifyHtml: true
  });

これは wysiwyg のスクリーンショットです (空中モードなのでツールは表示されません) コンソールがその値を検査しています。

ここに画像の説明を入力

wysiwyg のラテ テンプレート:

 <textarea name="{$key}" class="summernote form-control" >{$value->value|noescape}</textarea> 
4

2 に答える 2

8

最新のSummernote(この回答の時点でv0.7)には、以前のバージョンで作業することに慣れている(または以前のバージョン用に書かれたインターネット上のリソースを読んでいる場合、それらのほとんどがそうである)問題を引き起こす可能性のある変更があります。

textareaもう summernote には使用しないでください。である必要がありdivます。ただし、フォーム投稿で div を送信することはできません。hidden textareaそのため、適切なフォーム ID/名前と、summernote イベントにバインドされた html プロパティを使用する必要があります。initblur

次に例を示します。

サーバ側

これは ASP.NET Razor 構文です。

<textarea id="@Html.IdFor(p=>p.Content)" name="@Html.IdFor(p=>p.Content)" hidden class="someDummyClassName"></textarea>
<div class="form-control summernote">@Html.Raw(Model.Content)</div>

クライアント側

$(document).ready(function () {
    $('.summernote').on('summernote.init', function () {
        $('textarea.someDummyClassName').html($('.summernote').summernote("code"))
    }).on("summernote.blur", function () {
        $('textarea.someDummyClassName').html($('.summernote').summernote("code"))
    }).summernote({
        height: 280,
        // YOUR OPTIONS GOES HERE
            ....
        });
});
于 2015-11-26T11:55:52.373 に答える