Я открыл всплывающее окно с помощью window.open в JavaScript, я хочу обновить родительскую страницу, когда закрою это всплывающее окно. (Событие onclose?) Как я могу это сделать?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
Ответы:
Вы можете получить доступ к родительскому окну, используя window.opener , поэтому напишите что-то вроде следующего в дочернем окне:
<script> window.onunload = refreshParent; function refreshParent() { window.opener.location.reload(); } </script>
источник
popupWindow.closed
используя ,setInterval
как в @ растворе Zuul в.Во всплывающем окне нет события закрытия, которое вы могли бы прослушать.
С другой стороны, есть свойство closed, для которого устанавливается значение true, когда окно закрывается.
Вы можете установить таймер, чтобы проверить это закрытое свойство, и сделать это следующим образом:
var win = window.open('foo.html', 'windowName',"width=200,height=200,scrollbars=no"); var timer = setInterval(function() { if(win.closed) { clearInterval(timer); alert('closed'); } }, 1000);
Посмотрите этот рабочий пример Fiddle !
источник
на своей дочерней странице поместите эти:
<script type="text/javascript"> function refreshAndClose() { window.opener.location.reload(true); window.close(); } </script>
а также
<body onbeforeunload="refreshAndClose();">
но в качестве хорошего дизайна пользовательского интерфейса вам следует использовать Close,
button
потому что он более удобен для пользователя. см. код ниже.<script type="text/javascript"> $(document).ready(function () { $('#btn').click(function () { window.opener.location.reload(true); window.close(); }); }); </script> <input type='button' id='btn' value='Close' />
источник
Я использую это:
<script language='javascript'> var t; function doLoad() { t = setTimeout("window.close()",1000); } </script> <script type="text/javascript"> function refreshAndClose() { window.opener.location.reload(true); window.close(); } </script> <body onbeforeunload="refreshAndClose();" onLoad='doLoad()''>
когда окно закрывается, обновляет родительское окно.
источник
window.open вернет ссылку на вновь созданное окно при условии, что открытый URL-адрес соответствует политике того же происхождения .
Это должно работать:
function windowClose() { window.location.reload(); } var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no"); foo.onbeforeunload= windowClose;
источник
В моем случае я открыл всплывающее окно при нажатии кнопки ссылки на родительской странице. Чтобы обновить родительский элемент при закрытии дочернего элемента, используя
window.opener.location.reload();
в дочернем окне вызвало повторное открытие дочернего окна (возможно, из-за состояния просмотра, я думаю. Исправьте меня, если я ошибаюсь). Поэтому я решил не перезагружать страницу в родительском элементе и снова загружать страницу, назначая ей тот же URL-адрес.
Чтобы избежать повторного открытия всплывающего окна после закрытия всплывающего окна, это может помочь,
window.onunload = function(){ window.opener.location = window.opener.location;};
источник
Если ваше приложение работает в браузере с поддержкой HTML5. Вы можете использовать postMessage . Приведенный здесь пример очень похож на ваш.
источник
Попробуй это
источник
Вы можете перейти на главную страницу с помощью родительской команды (родительское окно - это окно) после шага, вы можете сделать все ...
function funcx() { var result = confirm('bla bla bla.!'); if(result) //parent.location.assign("http://localhost:58250/Ekocc/" + document.getElementById('hdnLink').value + ""); parent.location.assign("http://blabla.com/" + document.getElementById('hdnLink').value + ""); }
источник
Вы можете использовать приведенный ниже код на родительской странице.
<script> window.onunload = refreshParent; function refreshParent() { window.opener.location.reload(); } </script>
источник
Следующий код сможет обновить сообщение о закрытии родительского окна:
function ManageQB_PopUp() { $(document).ready(function () { window.close(); }); window.onunload = function () { var win = window.opener; if (!win.closed) { window.opener.location.reload(); } }; }
источник