我正在使用名为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的屏幕截图(在空中模式下,因此未显示工具),控制台检查其值。
wysiwyg的拿铁模板:
<textarea name="{$key}" class="summernote form-control" >{$value->value|noescape}</textarea>
答案 0 :(得分:7)
最新的Summernote(截至本答复时间为v0.7)如果您习惯使用以前的版本(或者为以前的版本编写的Internet上的资源,其中大部分都是。)
你不应该再使用textarea
作为夏令营了。它应该是div
。
但是您无法使用表单发布div,因为您需要使用hidden textarea
及其正确的表单ID /名称和html属性绑定到summernote事件。 init
和blur
。
以下是一个例子:
服务器端
这是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编辑器启动时。