Skip to content

Commit 0e469a5

Browse files
committed
Ensure onClose is not called multiple times when external window is closed
1 parent 07d3b4d commit 0e469a5

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

components/ResizeableWindow.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,9 @@ class ResizeableWindow extends React.Component {
170170
return React.Children.toArray(this.props.children).find((child) => child.props.role === role);
171171
};
172172
onClose = (ev) => {
173+
if (this.state.externalWindow) {
174+
this.state.externalWindow.removeEventListener('beforeunload', this.props.onClose);
175+
}
173176
this.props.onClose();
174177
ev.stopPropagation();
175178
};
@@ -428,7 +431,7 @@ class ResizeableWindow extends React.Component {
428431
return;
429432
}
430433
clearInterval(loadInterval);
431-
externalWindow.addEventListener('beforeunload', this.props.onClose, false);
434+
externalWindow.addEventListener('beforeunload', this.props.onClose, {capture: false, once: true});
432435
const titleEl = externalWindow.document.createElement('title');
433436
titleEl.appendChild(externalWindow.document.createTextNode(title));
434437
externalWindow.document.head.appendChild(titleEl);

0 commit comments

Comments
 (0)