如何在Vue.js中捕获子窗口的onclose(onbeforeunload)事件?

时间:2018-12-20 15:53:45

标签: javascript vue.js

我试图在Vue.js中创建一个函数,该函数在Chrome中打开一个新窗口。我需要从打开窗口的Vue中的同一组件捕获窗口的onclose或onbeforeunload事件。我尝试以这种方式实现它:

...
methods: {
    gitConnet(){
            var child = window.open("https://www.google.it", '_blank', 'fullscreen=no,height=600,width=800,top=100,location=no,titlebar=0');

            child.onclose = function(){ console.log('Child window onclose closed'); };

            child.onbeforeunload = function(){ console.log('Child window onbeforeunload closed'); };
        }
}
...

使用此代码,我可以打开新窗口,但是当我关闭窗口时,控制台中看不到任何消息。我也尝试过将子变量插入组件的data属性中,但是没有任何改变。

请,有人可以帮助我捕获Vue组件内部窗口的onclose事件。

谢谢。

1 个答案:

答案 0 :(得分:1)

不幸的是,那样做是不可能的。

但是,这样的事情可能会使您与所追求的目标保持足够的距离。

...
methods: {
  gitConnet(){
    var child = window.open("https://www.google.it", '_blank', 'fullscreen=no,height=600,width=800,top=100,location=no,titlebar=0');

    var loop = setInterval(function() {   
      if(child.closed) {
        clearInterval(loop);
        alert('closed');

        // Do your thing here it has been closed.

      }
    }, 500);
  }
}

...

简化示例:https://jsfiddle.net/v3qkswd2/