账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于监听localStorage变化的问题
    69
    0

    vue项目,比如我在index.vue页面,点击一个按钮,然后用window.open新窗口打开一个页面(case.vue)

    index.vue

    const { href } = that.$router.resolve({
      name: 'case',
      query: {
         abc: 'abc'
      }
    })
    window.open(href, '_blank')

    有如下代码

    伪代码:

    case.vue

    public mounted() {
        window.localStorage.setItem('reportParams', JSON.stringify({}))
        window.localStorage.setItem('reportParamsObj', JSON.stringify({}))
    
        this.$nextTick(() => {
          window.addEventListener('storage', this.reportParamsObjStorage, false)
        })
      }
    public destroyed() {
        window.removeEventListener('storage', this.reportParamsObjStorage)
      }
    public reportParamsObjStorage(e: any) {
        // 一堆逻辑省略
        
        // 重点是这一句 ie11下就会导致页面卡死 内存溢出 不明白为什么
        window.localStorage.setItem('reportParamsObj', JSON.stringify({}))
        
        // 这两句都正常
        // localStorage.setItem('reportParamsObj', '')
        // localStorage.removeItem('reportParamsObj')
        }
      }

    case.vue页面我打开一个还算正常,当我再打开一个case.vue页面就直接内存飙升,卡死了。
    问题是解决了,但是不知道为啥,求各路大神解释下

    2
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部