在summernote中转义HTML

时间:2015-11-12 14:17:14

标签: jquery html htmlpurifier summernote nette

我正在使用名为summernote的wysiwyg,我发送给服务器的值,我用HTML Purifier净化它。之后我将它保存到DB(mysql)。然后我需要在wysiwyg中显示纯化的html,因此将其写为textarea值(textarea在js中与summernote链接)。但它显示转义的html而不是格式化文本。编辑器正常工作,js控制台显示没有错误。

我用来初始化夏令营的Javascript

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

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

enter image description here

wysiwyg的拿铁模板:

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

2 个答案:

答案 0 :(得分:7)

最新的Summernote(截至本答复时间为v0.7)如果您习惯使用以前的版本(或者为以前的版本编写的Internet上的资源,其中大部分都是。)

你不应该再使用textarea作为夏令营了。它应该是div。 但是您无法使用表单发布div,因为您需要使用hidden textarea及其正确的表单ID /名称和html属性绑定到summernote事件。 initblur

以下是一个例子:

服务器端

这是ASP.NET Razor sytax,我确定你能弄明白什么是

<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
            ....
        });
});

答案 1 :(得分: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编辑器启动时。