Vue与Angular全局监听路由变化

前端 专栏收录该内容
3 篇文章 0 订阅

需求:
一个主页面通过iframe内嵌另一个项目
内嵌项目可能用到Vue,Angular等不同技术
主页面需要监听内嵌项目的页面切换url路由变化并做出相应响应

需求分析:
内嵌项目中对路由变化进行全局监听,当路由发生变化时,将变化后的url传到主页面

关键点:
路由变化的全局监听

代码

Vue全局监听路由变化

//监听
watch:{
  //路由发生变化调用
  $route(to,from){
    console.log("router = " + to.path);
    console.log("url = " + window.location.href);
    //将url传出去
    window.parent.postMessage(JSON.stringify({url:window.location.href}), "*");
  }
},
//项目初始化调用,将初始url传出去
mounted:function(){
  console.log("url = " + window.location.href);
  //将url传出去
  window.parent.postMessage(JSON.stringify({url:window.location.href}), "*");
}

Angular全局监听路由变化

//导入依赖包
import { NavigationEnd, Router, Event } from '@angular/router';

constructor(private router: Router) { 
  router.events.subscribe((event: Event)=>{
    if (event instanceof NavigationEnd){
      console.log("router = " + (<NavigationEnd>event).url);
      console.log("url = " + window.location.href);
      //将url传出去
      window.parent.postMessage(JSON.stringify({"url":window.location.href}),'*')
    }
  })
}

url的传出使用window.parent.postMessage方法
关于iframe内向父级页面传递数据和父级页面接收数据的具体方法可参考以下博客
点我跳转到参考博客

React全局监听路由变化参考以下博客
React全局监听路由变化

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值