jin-yufeng/mp-html

百度小程序中真机预览时仅包含br元素的节点会被全部移除

QIUZAIYOU opened this issue · 2 comments

问题描述

如果 Html 字符串中出现仅包含 <br/> 的元素,形如:

<p><br/></p>
<p style="text-indent:2em;"><br/></p>
被解析出来的 Dom 节点结构如下:
[{
  ...
  "children": [{
    "name": "br",
    "attrs": {}
  }]
}]

此时在百度开发者工具中的模拟器里可以正常显示解析后的富文本,但是在真机预览时,包含这部分 Dom 节点的节点会整个
被百度自带的 <rich-text> 组件去除,导致文本内容显示不全。

百度开发者工具模拟器中显示完整:
01

真机APP预览中所有此类段落都被删除:
02

解决办法

我暂时通过向 mp-html\index.js 中的 setContent: function (e, n) {} 函数添加 e = e.replace(/<(\w+)([^>]*)><br\/><\/\1>/ig,'') 正则表达式,将仅包含<br/> 的元素全部删除解决了这个问题。
不知道有没有人遇到和我一样的问题,或者有什么更好的解决方法?

找到问题了,br 解析结果里有一个 undefined,可能导致了真机上异常,我修改一下

感谢大佬。