Files
EdgeAdmin/web/public/js/components/common/keyword.js

36 lines
900 B
JavaScript
Raw Normal View History

Vue.component("keyword", {
props: ["v-word"],
data: function () {
let word = this.vWord
if (word == null) {
word = ""
2021-07-08 16:23:51 +08:00
} else {
word = word.replace(/\)/, "\\)")
word = word.replace(/\(/, "\\(")
word = word.replace(/\+/, "\\+")
word = word.replace(/\^/, "\\^")
word = word.replace(/\$/, "\\$")
}
let slot = this.$slots["default"][0]
2021-07-12 17:35:33 +08:00
let text = this.encodeHTML(slot.text)
if (word.length > 0) {
2021-07-08 16:23:51 +08:00
text = text.replace(new RegExp("(" + word + ")", "ig"), "<span style=\"border: 1px #ccc dashed; color: #ef4d58\">$1</span>")
}
return {
word: word,
text: text
}
},
2021-07-12 17:35:33 +08:00
methods: {
encodeHTML: function (s) {
2022-02-23 17:34:54 +08:00
s = s.replace(/&/g, "&amp;")
s = s.replace(/</g, "&lt;")
s = s.replace(/>/g, "&gt;")
s = s.replace(/"/g, "&quot;")
2021-07-12 17:35:33 +08:00
return s
}
},
template: `<span><span style="display: none"><slot></slot></span><span v-html="text"></span></span>`
})