wangeditor-team / wangEditor

wangEditor, open-source Web rich text editor 开源 Web 富文本编辑器
http://www.wangeditor.com/
MIT License
17.61k stars 3.32k forks source link

自定义元素,回显匹配不到对应的元素 #5651

Open meicy opened 1 year ago

meicy commented 1 year ago

问题描述

自定义了一个m-link, 插入正常,但是回显的时候发现匹配不到对应的元素

wangEditor 版本

"@wangeditor/editor": "^5.1.14",

是否查阅了文档 ?

(文档链接 www.wangeditor.com

最小成本的复现步骤

(请告诉我们,如何最快的复现该问题?)

自定义一个miniprogram-link 标签。正常插入 显示正常,但是在编辑器通过Html 回显的时候出现问题。 parse-elem-html.js
export const parseHtmlConf = { selector: 'a[data-w-e-type="miniprogram-link"]', // data-w-e-type 属性,留给自定义元素,保证扩展性 parseElemHtml: parseHtml, } 这样匹配不到 export const parseHtmlConf = { selector: 'a', // data-w-e-type 属性,留给自定义元素,保证扩展性 parseElemHtml: parseHtml, } 这样可以匹配。这样匹配的话功能正常,但是要去判断正常的link。 回显的html="点击文字跳转小程序"

meicy commented 1 year ago

function parseHtml(elem, children, editor) { // const $elem = $(elem) const dataMiniprogramAppid = elem.getAttribute('data-miniprogram-appid') // 微信小程序 children = children.filter((child) => { if (Text.isText(child)) return true if (editor.isInline(child)) return true return false })

// 无 children ,则用纯文本 if (children.length === 0) { children = [{ text: elem.innerHTML().replace(/\s+/gm, ' ') }] } if (dataMiniprogramAppid) { return { type: 'miniprogram-link', url: elem.getAttribute('href') || '', target: elem.getAttribute('target') || '', dataMiniprogramAppid: elem.getAttribute('data-miniprogram-appid') || '', dataMiniprogramPath: elem.getAttribute('data-miniprogram-path') || '', children, } } return { type: 'link', url: elem.getAttribute('href') || '', target: elem.getAttribute('target') || '', children, } }

export const parseHtmlConf = { selector: 'a', // data-w-e-type 属性,留给自定义元素,保证扩展性 parseElemHtml: parseHtml, }