vue项目获取浏览器对象“后退”,并监听,触发函数

1、app的根组件定义mounted函数:

mounted() {
	// 监听浏览器的返回按钮
	    if (window.history && window.history.pushState) {
	    history.pushState(null, null, document.URL);
	    window.addEventListener("popstate", this.onCloseModal, false);
	   }
	
	}

2、app根组件定义destroyed函数:

// 组件销毁阶段,解除监听返回按钮的事件
  destroyed() {
    window.removeEventListener("popstate", this.onCloseModal, false);
  },

3、app根组件的methods中定义,处理函数

methods: {
    // 监听返回按钮的处理函数
    onCloseModal() {
      // 获取当前页面的url地址
    const roster_url = window.location.href
    // 判断当前是哪一个页面,是否是花名册的个人详细页面,因为只有在花名册的个人详细页面才触发跳转
    const flag = roster_url.indexOf('roster_userinfo')
        //如果是花名册的个人详细页面,点击后退按钮,后退到花名册主页
      if( flag >= 0){
        this.$router.push('/indexToRoster')
      }
         
    },  
  },

如果定义到app根组件,如果不做区分,那么每一个页面点击后退按钮,都会触发onCloseModal这个处理函数,我的需求是,只是在“个人信息”的页面触发,直接定义到个人页面也可以,但是这次项目个人信息页面有5个,为了简化代码,这个方法,就定义在了app根组件,但是在触发的时候,做一个判断,判断此时在那一个人页面,如果在个人信息页面,才会触发这个方法。这样就解决了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3项目中,可以使用`window`对象监听浏览器在全屏和小屏状态下的改变。 首先,需要在Vue组件的`mounted`生命周期钩子函数中添加全屏和退出全屏的事件监听器,代码如下: ``` mounted() { window.addEventListener('fullscreenchange', this.handleFullScreenChange) window.addEventListener('webkitfullscreenchange', this.handleFullScreenChange) // 其他浏览器的全屏事件监听,如mozfullscreenchange,msfullscreenchange等 window.addEventListener('resize', this.handleResize) }, ``` 全屏状态变化时会触发`fullscreenchange`或`webkitfullscreenchange`事件,需要编写相应的事件处理函数`handleFullScreenChange`来处理全屏变化时的逻辑。 接下来,需要添加分辨率变化时的事件监听器,`resize`事件会在浏览器窗口大小发生改变时触发。在Vue组件中,编写`handleResize`事件处理函数来处理窗口大小变化时的逻辑。 ``` methods: { handleFullScreenChange() { // 在这里处理全屏状态变化时的逻辑 if (document.fullscreenElement || document.webkitFullscreenElement) { // 当前处于全屏状态 // ... } else { // 当前处于非全屏状态 // ... } }, handleResize() { // 在这里处理窗口大小变化时的逻辑 const screenWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; const screenHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; if (screenWidth > 1024) { // 大屏逻辑 // ... } else { // 小屏逻辑 // ... } } }, ``` 以上代码中,`handleFullScreenChange`函数根据`document.fullscreenElement`或`document.webkitFullscreenElement`是否为`null`来判断当前是否处于全屏状态。在其处理逻辑内,你可以根据需要自行编写全屏和非全屏状态时的操作。 `handleResize`函数通过获取窗口的宽度和高度来判断当前窗口是否为小屏(例如宽度小于1024),你可以根据需要在该函数的处理逻辑内编写相应的操作。 需要注意的是,当组件销毁时,也需要将之前添加的事件监听器移除,以避免内存泄漏,可以在Vue组件的`beforeUnmount`生命周期钩子函数中移除事件监听器,例如: ``` beforeUnmount() { window.removeEventListener('fullscreenchange', this.handleFullScreenChange) window.removeEventListener('webkitfullscreenchange', this.handleFullScreenChange) // 其他浏览器的全屏事件监听器的移除,如mozfullscreenchange,msfullscreenchange等 window.removeEventListener('resize', this.handleResize) }, ``` 以上是使用Vue3项目监听浏览器全屏和小屏的方法,可以根据实际需求来编写相应的处理逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值