5

我正在使用名为summernote 的所见即所得,我将这些值发送到服务器,在那里我使用HTML Purifier 对其进行净化。之后我将它保存到数据库(mysql)。然后我需要在所见即所得中显示纯化的 html,因此将其写为 textarea 值(textarea 在 js 中与 Summernote 链接)。但它显示转义的 html 而不是格式化的文本。编辑器工作正常,js 控制台没有显示错误。

我用来初始化summernote的Javascript

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

这是所见即所得的屏幕截图(在空中模式下,因此未显示工具),控制台检查其值。

在此处输入图像描述

所见即所得的拿铁咖啡模板:

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

2 回答 2

8

最新的 Summernote(截至本答案的 v0.7)有一些变化,如果您习惯于使用以前的版本(或阅读互联网上为以前版本编写的资源,其中大部分都是。),可能会导致问题。

你不应该再使用textareasummernote了。它应该是一个div. 但是您不能在表单帖子中提交 div,因为您需要使用 ahidden textarea及其正确的表单 id/name 和绑定到 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 回答
0

我今天也发生了类似的事情,所以我以这种方式解决了它:

$('.summernote', elmnOfContext).summernote({
    lang: 'pl-PL',
    toolbar: [
        ['edit', ['undo', 'redo']]
        //...    
    ],
    callbacks: {
        onInit: function() {
            //The trick:
            var textarea = $(this);
            textarea.val(textarea.summernote("code"));
        }
    }
});

由于此解决方案,即使用户没有任何更改,被视为 textarea 值的源也可以正确转义。只需在summernote 编辑器启动时。

于 2020-09-03T19:12:26.123 回答