diff --git a/public/.DS_Store b/public/.DS_Store index 8dbe9b2403a4b8419a40b05cb3c322e5c3a83c3b..d0ff26e29521aa8a952c5db0d03f6a27c7d6060b 100644 Binary files a/public/.DS_Store and b/public/.DS_Store differ diff --git a/public/index.html b/public/index.html index 6500cc5236feda423b6274d3fa3b25ce187bef0f..44d9d0c978fc9a322d59e7f86b417ba959ab05ae 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 0000000000000000000000000000000000000000..b91a120ebeb97ad8d687c4f8a34a02ece039549a --- /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 7def2c3bfb74ea038e4b788ea27afb2f9714e444..a7883a95e33cbd17da11b4f67aa1309b8e8d3808 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 e7d05dee108ae46b5ee03545f05f68d6ff325669..4454a484b5ef39dea39b6d5df013cf26e43e8c08 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 9a1cda54eb91de46852797e1d4ddb66c667d6747..0000000000000000000000000000000000000000 --- 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 8c41b1356630bcfe56698bdedef3ac979146180f..95f6257ff04ec52da06cad11f20f0a06681d587e 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 439c86bc33dada79dd551fadd2b652fc511af5c5..c7873103d8650e359b0334ab140475d3e1287de6 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);