如何检测弹出窗口关闭事件

Cha*_*han 0 javascript facebook-graph-api

JavaScript的

document.querySelector('#share').onclick = function () {
    var popup = window.open('http://www.facebook.com/sharer/sharer.php?u=http://www.google.com', '', "width=400, height=400");

    popup.onbeforeunload = function() {
        alert('unload');
    }

    return false;
};
Run Code Online (Sandbox Code Playgroud)

HTML

<a id="share" href="#">share</a>
Run Code Online (Sandbox Code Playgroud)

两件事情:

  1. 我想在用户完成facebook共享后做一些事情,如果我通过打开窗口共享页面,窗口将在一切完成后自动关闭,所以我想使用beforeload事件来模仿after sharing callback,但是当弹出窗口时我无法得到它关闭了.

  2. 如果用户只是关闭窗口或取消共享也会触发事件,所以这不是最好的解决方案,有没有facebook共享成功的回调api?

Lev*_*sky 14

解决了这个问题setInterval:

document.querySelector('#share').onclick = function () {
    var popup = window.open('http://www.facebook.com/sharer/sharer.php?u=http://www.google.com', '', "width=400, height=400");

    var popupTick = setInterval(function() {
      if (popup.closed) {
        clearInterval(popupTick);
        console.log('window closed!');
      }
    }, 500);

    return false;
};
Run Code Online (Sandbox Code Playgroud)