提交 936382fa 编写于 作者: M mehaotian

fix(h5): 修复 rich-text 组件无法渲染 section 等标签的问题

上级 f9f2e773
......@@ -3,9 +3,18 @@ import { hasOwn, isPlainObject } from '@vue/shared'
const TAGS = {
a: '',
abbr: '',
address: '',
article: '',
aside: '',
b: '',
bdi: '',
bdo: ['dir'],
big: '',
blockquote: '',
br: '',
caption: '',
center: '',
cite: '',
code: '',
col: ['span', 'width'],
colgroup: ['span', 'width'],
......@@ -16,12 +25,15 @@ const TAGS = {
dt: '',
em: '',
fieldset: '',
font: '',
footer: '',
h1: '',
h2: '',
h3: '',
h4: '',
h5: '',
h6: '',
header: '',
hr: '',
i: '',
img: ['alt', 'src', 'height', 'width'],
......@@ -29,21 +41,31 @@ const TAGS = {
label: '',
legend: '',
li: '',
mark: '',
nav: '',
ol: ['start', 'type'],
p: '',
pre: '',
q: '',
rt: '',
ruby: '',
s: '',
section: '',
small: '',
span: '',
strong: '',
sub: '',
sup: '',
table: ['width'],
tbody: '',
td: ['colspan', 'rowspan', 'height', 'width'],
td: ['colspan', 'height', 'rowspan', 'width'],
tfoot: '',
th: ['colspan', 'rowspan', 'height', 'width'],
th: ['colspan', 'height', 'rowspan', 'width'],
thead: '',
tr: '',
ul: ''
tr: ['colspan', 'height', 'rowspan', 'width'],
tt: '',
u: '',
ul: '',
}
const CHARS = {
amp: '&',
......@@ -51,14 +73,13 @@ const CHARS = {
lt: '<',
nbsp: ' ',
quot: '"',
apos: "'"
apos: "'",
}
function decodeEntities(htmlString) {
return htmlString.replace(/&(([a-zA-Z]+)|(#x{0,1}[\da-zA-Z]+));/gi, function(
match,
stage
) {
return htmlString.replace(
/&(([a-zA-Z]+)|(#x{0,1}[\da-zA-Z]+));/gi,
function (match, stage) {
if (hasOwn(CHARS, stage) && CHARS[stage]) {
return CHARS[stage]
}
......@@ -71,11 +92,12 @@ function decodeEntities(htmlString) {
const wrap = document.createElement('div')
wrap.innerHTML = match
return wrap.innerText || wrap.textContent
})
}
)
}
export default function parseNodes(nodes, parentNode) {
nodes.forEach(function(node) {
nodes.forEach(function (node) {
if (!isPlainObject(node)) {
return
}
......@@ -94,7 +116,7 @@ export default function parseNodes(nodes, parentNode) {
const attrs = node.attrs
if (isPlainObject(attrs)) {
const tagAttrs = TAGS[tagName] || []
Object.keys(attrs).forEach(function(name) {
Object.keys(attrs).forEach(function (name) {
let value = attrs[name]
switch (name) {
case 'class':
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册