wangEditor在普通输入时是没问题的,但是复制word内容之后会将word的样式一并粘贴过去,获取内容会出现[if gte mso 9]等字样,以至于展示的时候出现js语法错误,基本上解决方案有两种
关闭粘贴样式的过滤
当从其他网页复制文本内容粘贴到编辑器中,编辑器会默认过滤掉复制文本中自带的样式,目的是让粘贴后的文本变得更加简洁和轻量。用户可通过editor.customConfig.pasteFilterStyle = false手动关闭掉粘贴样式的过滤。
// 关闭粘贴样式的过滤
editor.customConfig.pasteFilterStyle = false
但是添加之后并不起作用
自定义处理粘贴的文本内容
参考:https://blog.csdn.net/qq_41619741/article/details/85685153
// 自定义处理粘贴的文本内容
editor.customConfig.pasteTextHandle = function (content) {
// content 即粘贴过来的内容(html 或 纯文本),可进行自定义处理然后返回
if (content == '' && !content) return ''
var str = content
str = str.replace(/<xml>[\s\S]*?<\/xml>/ig, '')
str = str.replace(/<style>[\s\S]*?<\/style>/ig, '')
str = str.replace(/<\/?[^>]*>/g, '')
str = str.replace(/[ | ]*\n/g, '\n')
str = str.replace(/ /ig, '')
str = str.replace(/<([a-z]+?)(?:\s+?[^>]*?)?>\s*?<\/\1>/, '')
str = str.trim();
str = str.replace(/\n\s*/g, '<br/>')
str = str.replace(/<p><br><br><\/p><p><br><\/p>/, '')
console.log('****', str)
return str
}
修改完成之后存在数据库回显发现还是有语法错误,主要是重新编辑用的el赋值,原值其实是有换行的,这样就造成了语法错误。
于是跟踪了下后台返回的数据,发现其实里面还有其他转义字符“\r\n”
所以在返回值之前将数据做处理
.replaceAll("\\r", "")
.replaceAll("\\n", "")
这样就解决了
Es6 语法处理js语法换行错误
也可以直接用 ``引入解决js单引号和双引号不能换行的问题,但是又浏览器限制,不建议使用
editor.txt.html(`${productDesc.scenicDesc}`)