是否可以从iframe中检测window.close?

时间:2017-08-29 18:51:08

标签: javascript html reactjs iframe window.closed

我有一个模态(来自我的应用程序的React组件),在里面我有一个iframe。我无法控制iframe,我知道在采取某些措施后它会调用window.close。有没有办法检测iframe里面的内容何时调用window.close,所以我也可以关闭模​​态?

重要提示:我没有使用jQuery,只使用纯javascript。

iframe代码:

      <iframe height='500' width='340'                      
        src='http://content_url'
        ref={(f) => { this.ifr = f; }}>
      </iframe>

有了这个参考,我可以参考我的反应组件中的iframe:

  componentDidMount() {
    this.ifr.onload = () => {
      //whatever action
    };
  }

但是我无法通过unload事件做我想要的事情,因为iframe没有被卸载,它只是在里面调用window.close。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以尝试将window.close设置为其他函数,并在iframe调用时捕获。

  var closing = window.close;
  window.close = function () {
    console.log('window close fired!');
    closing();
  };

更好的方法甚至创建事件发射器。

  var event = new Event('onCloseWindow');

  // Listen for the event.
  elem.addEventListener('onCloseWindow', function (e) { ... }, false);

  var closing = window.close;
  window.close = function () {
    // Dispatch the event.
    elem.dispatchEvent(event);
    closing();
  };
相关问题