From 0c565e52abba1947b31e47653d1eaac173f6a789 Mon Sep 17 00:00:00 2001 From: zhangsir Date: Tue, 28 May 2024 18:32:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Forward.vue | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/src/views/Forward.vue b/src/views/Forward.vue index 3097ca9c..a2f35614 100644 --- a/src/views/Forward.vue +++ b/src/views/Forward.vue @@ -27,29 +27,23 @@ import portalFooter from "@/components/PortalFooter.vue"; if(params){ this.url=this.url+'?'+params; } - window.addEventListener('hashchange', this.handleHashChange); - window.addEventListener('popstate', this.handlePopState); + window.addEventListener('message', this.handleMessageFromChild); }, beforeDestroy() { - window.removeEventListener('hashchange', this.handleHashChange); - window.removeEventListener('popstate', this.handlePopState); - }, + window.removeEventListener('message', this.handleMessageFromChild); + }, methods:{ - handleHashChange() { - this.navigate(); - }, - handlePopState() { - this.navigate(); - }, - navigate() { - const navigatePath = new URLSearchParams(window.location.search).get('navigate'); - if (navigatePath) { - // 清除查询参数 - window.history.replaceState({}, '', location.pathname); - // 导航 - this.$refs.iframe.src = navigatePath; - } - }, + handleMessageFromChild(event) { + if (event.origin !== process.env.VUE_APP_BOE_MOBILE_URL) return; + if (event.data && event.data.type === 'navigate') { + this.navigate(event.data.path); + } + }, + navigate(path) { + this.$router.push({ + path:path + }) + }, } }