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) {