diff --git i/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js w/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js
index 5395386087..5ea8ff4017 100644
--- i/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js
+++ w/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js
@@ -58,9 +58,9 @@
elem.value = chosenId;
}
$(elem).trigger('change');
- const index = window.relatedWindows.indexOf(win);
+ const index = relatedWindows.indexOf(win);
if (index > -1) {
- window.relatedWindows.splice(index, 1);
+ relatedWindows.splice(index, 1);
}
win.close();
}
@@ -211,6 +211,8 @@
window.showAddAnotherPopup = showRelatedObjectPopup;
window.dismissAddAnotherPopup = dismissAddRelatedObjectPopup;
+ window.__SECRET_INTERNALS_relatedWindows = relatedWindows;
+
window.addEventListener('unload', function(evt) {
window.dismissChildPopups();
});
diff --git i/js_tests/admin/RelatedObjectLookups.test.js w/js_tests/admin/RelatedObjectLookups.test.js
index 722aa7ae7b..3d28e16163 100644
--- i/js_tests/admin/RelatedObjectLookups.test.js
+++ w/js_tests/admin/RelatedObjectLookups.test.js
@@ -8,7 +8,6 @@ QUnit.module('admin.RelatedObjectLookups', {
`);
- window.relatedWindows = window.relatedWindows || [];
}
});
@@ -31,10 +30,10 @@ QUnit.test('dismissRelatedLookupPopup removes window from relatedWindows array',
name: testId,
close: function() {}
};
- window.relatedWindows.push(mockWin);
- assert.equal(window.relatedWindows.indexOf(mockWin), 0, 'Window should be in relatedWindows array');
+ window.__SECRET_INTERNALS_relatedWindows.push(mockWin);
+ assert.equal(window.__SECRET_INTERNALS_relatedWindows.indexOf(mockWin), 0, 'Window should be in relatedWindows array');
window.dismissRelatedLookupPopup(mockWin, '123');
- assert.equal(window.relatedWindows.indexOf(mockWin), -1, 'Window should be removed from relatedWindows array');
+ assert.equal(window.__SECRET_INTERNALS_relatedWindows.indexOf(mockWin), -1, 'Window should be removed from relatedWindows array');
});
QUnit.test('dismissRelatedLookupPopup triggers change event for single value field', function(assert) {