系统早期使用的wangEditor的4.x版本,录入了很多数据。之后升级了5.x版本。 近期用户编辑早先4.x时期录入的数据,直接报错。定位错误是调用editor.setHtml(content);报错。
问题1: # Cannot read properties of null (reading 'length')
官方方案#4933
出问题数据如下:
js
<h3 id=\"prnoj\">4.标题</h3>
<a href=\"https://github.com/wangeditor-team/wangEditor/issues/4933\" target=\"_blank\">https://github.com/wangeditor-team/wangEditor/issues/4933
</a><br/>
页面崩溃,控制台打印错误日志如下:
其中的a
标签替换为img
标签也报同样的错
解决方案
在a
或者img
标签外层嵌套一层p
标签
js
<h3 id=\"prnoj\">4.标题</h3><p><a href=\"https://github.com/wangeditor-team/wangEditor/issues/4933\" target=\"_blank\">https://github.com/wangeditor-team/wangEditor/issues/4933</a></p><br/>
问题2: 图片不展示
旧数据如下:
js
<h3>标题</h3>
<div><img src=\"https://images.pexels.com/photos/19117864/pexels-photo-19117864.jpeg\" contenteditable=\"false\"/></div>
现象是:只有标题展示,图片不展示
解决方案
将img标签使用p标签包裹,只能是P标签,如下
html
<h3>标题</h3>
<p><img src=\"https://images.pexels.com/photos/19117864/pexels-photo-19117864.jpeg\" contenteditable=\"false\"/></p>
其实在5.0输入一个图片,自动生成的代码就是p标签包裹img标签的格式
终极解决方案
如果想要4.0的数据展示5.0的效果。需要在出问题的地方都包裹一个P标签
。
如果不需要数据复原展示,只需要防止页面崩溃,直接try...catch 一下
js
try {
editor.setHtml(content);
} catch(e) {
editor.setHtml(`<p>${content}</p>`);
}