我有一个模态(来自我的应用程序的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。
谢谢!
答案 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();
};