From 182e5a6974aabb3b9d0fe921585059deb8231ba2 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sat, 20 Apr 2024 16:04:51 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E5=8F=91=E9=80=81=E6=B6=88=E6=81=AF=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/assets/js/store/markdown.js | 38 +++++++++++++++++---------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/resources/assets/js/store/markdown.js b/resources/assets/js/store/markdown.js index aaae75157..93ffd6f88 100644 --- a/resources/assets/js/store/markdown.js +++ b/resources/assets/js/store/markdown.js @@ -56,29 +56,39 @@ export function isMarkdownFormat(html) { if (html === '') { return false } - if (/<\/(strong|s|em|u|ol|ul|li|blockquote|pre|img|a)>/i.test(html)) { + const tmp = html.replace(/

/g, '\n').replace(/(^|\s+)```([\s\S]*)```/gm, '') + if (/<\/(strong|s|em|u|ol|ul|li|blockquote|pre|img|a)>/i.test(tmp)) { return false } - if (/]+?class="mention"[^>]*?>/i.test(html)) { + if (/]+?class="mention"[^>]*?>/i.test(tmp)) { return false } // - let el = document.createElement('div') + const el = document.createElement('div') + el.style.position = 'fixed' + el.style.top = '0' + el.style.left = '0' + el.style.width = '10px' + el.style.height = '10px' + el.style.overflow = 'hidden' + el.style.zIndex = '-9999' + el.style.opacity = '0' el.innerHTML = html + document.body.appendChild(el) const text = el.innerText - el = null + document.body.removeChild(el) // if ( - /(^|\s+)#+\s(.*)$/m.test(text) // 标题 - || /\*\*(.*)\*\*/m.test(text) // 粗体 - || /__(.*)__/m.test(text) // 粗体 - || /\*(.*)\*/m.test(text) // 斜体 - || /_(.*)_/m.test(text) // 斜体 - || /~~(.*)~~/m.test(text) // 删除线 - || /\[(.*?)\]\((.*?)\)/m.test(text) // 链接 - || /!\[(.*?)\]\((.*?)\)/m.test(text) // 图片 - || /`(.*?)`/m.test(text) // 行内代码 - || /```([\s\S]*?)```/m.test(text) // 代码块 + /(^|\s+)#+\s(.*)$/m.test(text) // 标题 + || /(^|\s+)\*\*(.*)\*\*/m.test(text) // 粗体 + || /(^|\s+)__(.*)__/m.test(text) // 粗体 + || /(^|\s+)\*(.*)\*/m.test(text) // 斜体 + || /(^|\s+)_(.*)_/m.test(text) // 斜体 + || /(^|\s+)~~(.*)~~/m.test(text) // 删除线 + || /(^|\s+)\[(.*?)\]\((.*?)\)/m.test(text) // 链接 + || /(^|\s+)!\[(.*?)\]\((.*?)\)/m.test(text) // 图片 + || /(^|\s+)`(.*?)`/m.test(text) // 行内代码 + || /(^|\s+)```([\s\S]*?)```/m.test(text) // 代码块 ) { return true }