记录如何区分浏览器刷新和关闭

577 阅读1分钟

利用浏览器刷新的和关闭的时间差来判断

 mounted() {
    // パスサムを取得します
    const obj={...this.$route.query}
    this.folder=obj.folder
    this.originalImage = obj.imageUrl
    this.imageList=obj.fileNames.map(item=>{
      return this.root+this.root1 +obj.folder+'/'+item+ '/' + getToken()  
    })
    // マスターマップ配列の最後のアイテム
    this.mainImage=this.imageList.at(-1)
    // 配列の最後の項目の削除
    this.imageList.pop()
    //ページが閉じたときにバックグラウンド切り取りフォルダ削除動作を実行する
    window.addEventListener('beforeunload', e => this.beforeunloadHandler(e))
    window.addEventListener('unload', e => this.unloadHandler(e))
  },
  destroyed() {
    window.removeEventListener('beforeunload', e => this.beforeunloadHandler(e))
    window.removeEventListener('unload', e => this.unloadHandler(e))
},
methods: {
    beforeunloadHandler(){
      this.beforeUnloadTime=new Date().getTime();
    },
    unloadHandler(e){
      // 時間差によるリフレッシュかオフかの判断
      this.unloadTime=new Date().getTime()-this.beforeUnloadTime;
      //ウィンドウを閉じるかリフレッシュするかを判断する
      if(this.unloadTime <= 5){
        axios({
            method: "get",
            //urlアドレス
            url:this.root+this.root2 + this.folder +'/' +getToken()+'/',
            // 要求ヘッダの構成
            headers: {
                "Access-Control-Allow-origin": "*",
                "Content-Type": "application/json; charset=UTF-8",
                Authorization: "Bearer " + getToken(),
            }
        }).then(res => {
            // resolve(res.data)
        }).catch(error => {
            reject(error)
        })
      }
    },
    }