diff --git a/src/component/Account/message/system.vue b/src/component/Account/message/system.vue index 8795031f..3b98a772 100644 --- a/src/component/Account/message/system.vue +++ b/src/component/Account/message/system.vue @@ -32,6 +32,7 @@ import { Https } from "@/tool/https"; import { useRouter,useRoute } from 'vue-router' import { useStore } from "vuex"; import { useI18n } from 'vue-i18n' +import { isValidUrl } from '@/tool/util'; export default defineComponent({ components:{ }, @@ -70,7 +71,13 @@ export default defineComponent({ accountMessage.isNoData = true }) } - let setRead = (item:any)=>{ + let setRead = (item: any) => { + const content = item.content.content + console.log('111', isValidUrl(content)); + if (isValidUrl(content)) { + window.open(content, '_blank'); + } + prop.setReadStatus(item).then((rv:any)=>{ item.isRead = 1 }).catch((err:any)=>{ diff --git a/src/tool/util.js b/src/tool/util.js index b8f095c7..1111bca4 100644 --- a/src/tool/util.js +++ b/src/tool/util.js @@ -672,6 +672,17 @@ function sketchToMask(sketchImage) { img.src = sketchImage; }); } + +function isValidUrl(string) { + try { + const url = new URL(string) + // 通常我们只需要 http 或 https 协议 + return url.protocol === "http:" || url.protocol === "https:" + } catch (err) { + return false + } +} + export { isEmail, getUploadUrl, @@ -695,5 +706,6 @@ export { calculateGradientCoordinate, segmentImage, UrlToFile, - sketchToMask + sketchToMask, + isValidUrl } \ No newline at end of file