From 8039f5e44c8854dc29381a696b6afd5f76d9ae70 Mon Sep 17 00:00:00 2001 From: layyback <505187749@qq.com> Date: Mon, 6 Jun 2022 14:30:19 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E8=BF=87=E6=BB=A4img=20onerror?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/.DS_Store | Bin 6148 -> 6148 bytes public/index.html | 1 + public/package.json | 5 +++ src/App.vue | 6 ++-- src/assets/js/utils.js | 29 +++++++++--------- src/assets/jupyter-render | 1 - src/assets/style/global.less | 3 +- .../content/mixins/render-mixins.js | 5 +-- 8 files changed, 28 insertions(+), 22 deletions(-) create mode 100644 public/package.json delete mode 160000 src/assets/jupyter-render diff --git a/public/.DS_Store b/public/.DS_Store index 8dbe9b2403a4b8419a40b05cb3c322e5c3a83c3b..d0ff26e29521aa8a952c5db0d03f6a27c7d6060b 100644 GIT binary patch delta 92 zcmZoMXfc@J&&atkU^g=(=Vl%jK_+`ahH!>VhCGH8hJ1!{hGGUo1_Oq8h6)BV1``H7 opiD7CzGqH;a#Buy5(5K+00RTlWFUR?KNM^%T+O(do#QV*00|!(YXATM delta 28 kcmZoMXfc@J&&aVcU^g=($7UWDL8gsmuNXJ8bNuB80DdM2&j0`b diff --git a/public/index.html b/public/index.html index 6500cc5..44d9d0c 100644 --- a/public/index.html +++ b/public/index.html @@ -147,6 +147,7 @@ // console.log(res); }, onUpload: function(file, type, callback) { + debugger if (type === "video" || type === "img") { let time = 0; const timeObj = setInterval(() => { diff --git a/public/package.json b/public/package.json new file mode 100644 index 0000000..b91a120 --- /dev/null +++ b/public/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "http-server": "^14.1.0" + } +} diff --git a/src/App.vue b/src/App.vue index 7def2c3..a7883a9 100644 --- a/src/App.vue +++ b/src/App.vue @@ -535,9 +535,9 @@ export default { item.linkType = linkEl.getAttribute("data-type"); linkEl.setAttribute("target", "_blank"); linkEl.setAttribute("href", url); - if (item.url.includes(".ipynb")) { - linkEl.className = "jupyterEl"; - } + // if (item.url.includes(".ipynb")) { + // linkEl.className = "jupyterEl"; + // } const title = getLinkTitle(linkEl, item); linkEl.innerHTML = renderLinkCard(title, item); }); diff --git a/src/assets/js/utils.js b/src/assets/js/utils.js index e7d05de..4454a48 100644 --- a/src/assets/js/utils.js +++ b/src/assets/js/utils.js @@ -1,5 +1,6 @@ // 获取选中文本信息 +import DOMPurify from "dompurify"; export function getSelectionInfo(selectorId) { const selector = document.getElementById(selectorId); if (!selector) return; @@ -224,21 +225,21 @@ export function removeBlankLine(val) { } // 获取被过滤掉的标签 -export function getFilteredTags(oldStr, newStr) { - // if (oldStr.length - newStr.length === 0) return []; - // const filteredStr = oldStr.replace(newStr.trim(), ""); - // console.log(11, filteredStr); - const virtualDom = document.createElement("div"); - virtualDom.innerHTML = oldStr; - const oldTags = Array.from(virtualDom.getElementsByTagName("*")); - virtualDom.innerHTML = newStr; - const newTags = Array.from(virtualDom.getElementsByTagName("*")); +// export function getFilteredTags(oldStr, newStr) { +// // if (oldStr.length - newStr.length === 0) return []; +// // const filteredStr = oldStr.replace(newStr.trim(), ""); +// // console.log(11, filteredStr); +// const virtualDom = document.createElement("div"); +// virtualDom.innerHTML = oldStr; +// const oldTags = Array.from(virtualDom.getElementsByTagName("*")); +// virtualDom.innerHTML = newStr; +// const newTags = Array.from(virtualDom.getElementsByTagName("*")); - // 待优化 - const filteredTags = new Array(oldTags.length - newTags.length).fill(0); +// // 待优化 +// const filteredTags = new Array(oldTags.length - newTags.length).fill(0); - return filteredTags; -} +// return filteredTags; +// } // 格式刷的规则 export function copyFormatRules(selection) { if (!selection) return ""; @@ -348,7 +349,7 @@ export function copyFormatRules(selection) { export function addLanguageClass(html) { const virtualDom = document.createElement("div"); - virtualDom.innerHTML = html; + virtualDom.innerHTML = DOMPurify.sanitize(html); virtualDom.querySelectorAll("code").forEach(item => { if (!/language-/.test(item.className)) { item.className = "language-javascript"; diff --git a/src/assets/jupyter-render b/src/assets/jupyter-render deleted file mode 160000 index 9a1cda5..0000000 --- a/src/assets/jupyter-render +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9a1cda54eb91de46852797e1d4ddb66c667d6747 diff --git a/src/assets/style/global.less b/src/assets/style/global.less index 8c41b13..95f6257 100644 --- a/src/assets/style/global.less +++ b/src/assets/style/global.less @@ -12,8 +12,7 @@ } html, -body, -#app { +body { padding: 0; margin: 0; min-height: 100vh; diff --git a/src/components/content/mixins/render-mixins.js b/src/components/content/mixins/render-mixins.js index 439c86b..c787310 100644 --- a/src/components/content/mixins/render-mixins.js +++ b/src/components/content/mixins/render-mixins.js @@ -1,5 +1,5 @@ import { - getFilteredTags, + // getFilteredTags, getLinkTags, addLanguageClass, formatElements, @@ -36,7 +36,8 @@ export default { ], FORBID_ATTR: ["style"] }); // 去除标签 - const filteredTags = getFilteredTags(html, cleanHtml); // 计算是否有标签被过滤 + const filteredTags = DOMPurify.removed; // 计算是否有标签被过滤 + // const filteredTags = getFilteredTags(html, cleanHtml); // 计算是否有标签被过滤 // 链接转换为卡片 // 获取标题列表 const { vDom, links, dirTags } = getLinkTags(this.id, cleanHtml); -- GitLab