1

我有一个模态(我的应用程序中的一个 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>

有了这个 ref,我可以从我的 react 组件中引用 iframe:

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

但我不能用 unload 事件做我想做的事,因为 iframe 没有被卸载,它只是在里面调用 window.close 。

谢谢!

4

1 回答 1

2

您可以尝试将 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();
  };
于 2017-08-29T18:57:52.390 回答