1.问题
tinymce.init({
...
}).then(res => {
//window.tinymce.activeEditor.undoManage.clear(); //清空文本框内容
tinyMCE.activeEditor.setContent('{{ content|safe }}');
});
直接使用tinymce的setContent为富文本框赋值content出现报错–赋值失败:
赋值内容存在多行,而不是单一的一行字符串,引号无法囊括多行
2.解决方法
可以使用django的过滤器:linebreaks
或者linebreaksbr
将原文的换行 用<br/>
标签进行替换,将多行的字符串拼接成一行:
tinyMCE.activeEditor.setContent('{{ content|safe|linebreaksbr }}');
就可以成功对tinyMCE赋值
但是,这两个过滤器处理后,赋值的原文会出现空行过多添加的问题
进一步处理方法
在给tinyMCE赋值前,还需再单独处理字符串:
.then(res => {
//window.tinymce.activeEditor.undoManage.clear(); //清空文本框内容
var content='{{ econtent|safe| linebreaksbr }}'.toString().replaceAll("<br />","") //将所有br标签去除
tinyMCE.activeEditor.setContent(content);
});
linebreaksbr 将换行符替换成br标签,使得多行文本拼接成单行字符串
replaceAll()将所有br标签去除,还原成原汁原味的文本