diff --git a/src/App.vue b/src/App.vue
index 8f9c2ac4eb88af3cad17c60faa146d90ffcf8731..c93e5fb26d59532c1dadd21a80814b852c1f54c3 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -31,6 +31,7 @@
:id="textareaId"
:fullScreen.sync="fullScreen"
:text="text"
+ :height="textareaHeight"
:html.sync="html"
:htmlMinHeight="htmlMinHeight"
v-if="showPreview"
@@ -47,12 +48,14 @@
:maxLength="maxLength"
:textLength.sync="textLength"
:rows="rows"
+ :height="textareaHeight"
:html.sync="html"
:id="textareaId"
:ref="'md_textarea' + id"
@tab="$refs['md_header' + id].tab()"
@submit="submit"
@enter="$refs['md_header' + id].resetUlNum()"
+ @getFilteredTags="filteredTags = $event"
v-else
/>
@@ -101,7 +104,7 @@ export default {
// 初始化时赋值
value: {
type: [String, Number],
- default: " "
+ default: ""
},
// 全屏时的z-index
zIndex: {
@@ -145,6 +148,11 @@ export default {
type: [Number, String],
default: ""
},
+ // 高度
+ height: {
+ type: Number,
+ default: 0
+ },
// 最大长度
maxLength: {
type: [Number, String],
@@ -164,6 +172,11 @@ export default {
computed: {
textareaId() {
return "textarea_" + this.id;
+ },
+ textareaHeight() {
+ const height = this.height;
+ if (!height) return 0;
+ return height - 83;
}
},
data() {
@@ -172,6 +185,7 @@ export default {
isFocus: false,
showPreview: false,
fileList: [],
+ filteredTags: [],
text: "",
html: "",
ulNum: 1,
@@ -242,6 +256,7 @@ export default {
const checkResult = checktUrl(val, this.filePathRule);
emitContent.invalidList = checkResult;
}
+ emitContent.filteredTags = this.filteredTags;
this.$emit("change", emitContent);
this.$emit("input", emitContent);
}
diff --git a/src/assets/js/utils.js b/src/assets/js/utils.js
index a42aeb367b4e2646b2c7b7336e3273241f961e35..17555d0528ff3f029fedaa579203ddbae3137863 100644
--- a/src/assets/js/utils.js
+++ b/src/assets/js/utils.js
@@ -173,8 +173,18 @@ export function checkBoswer() {
);
return agent !== null;
}
-
+// 去除头部空格行
export function removeBlankLine(val) {
if (!val) return "";
return val.replace(/^\n/, "");
}
+
+// 获取被过滤掉的标签
+export function getFilteredTags(oldStr, newStr) {
+ if (oldStr.length - newStr.length === 0) return [];
+ const filteredStr = oldStr.replace(newStr.trim(), "");
+ const virtualDom = document.createElement("div");
+ virtualDom.innerHTML = filteredStr;
+ const filteredTags = Array.from(virtualDom.getElementsByTagName("*"));
+ return filteredTags;
+}
diff --git a/src/components/content/md-preview.vue b/src/components/content/md-preview.vue
index 8f719277485f1e17c51732fa195f2c5f5d6567a7..983fdf363e19366abcb9bbc217575cae3cdc368d 100644
--- a/src/components/content/md-preview.vue
+++ b/src/components/content/md-preview.vue
@@ -1,6 +1,12 @@