Я открыл всплывающее окно window.open в JavaScript, я хочу обновить родительскую страницу, когда я закрою это всплывающее окно. (onclose event?) Как я могу это сделать?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
Я открыл всплывающее окно window.open в JavaScript, я хочу обновить родительскую страницу, когда я закрою это всплывающее окно. (onclose event?) Как я могу это сделать?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
Вы можете получить доступ к родительскому окну с помощью window.opener ', поэтому в дочернем окне напишите следующее:
<script>
window.onunload = refreshParent;
function refreshParent() {
window.opener.location.reload();
}
</script>
В всплывающем окне нет события закрытия, которое вы можете прослушать.
С другой стороны, существует закрытое свойство, которое устанавливается в 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);
См. этот рабочий пример Скрипты!
на вашей дочерней странице, поставьте:
<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' />
window.open вернет ссылку на вновь созданное окно при условии, что открытый URL соответствует Одинаковой исходной политики.
Это должно работать:
function windowClose() {
window.location.reload();
}
var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;
Я использую это:
<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()''>
когда окно закрывает его, затем обновляет родительское окно.
Если ваше приложение работает в браузере с поддержкой HTML5. Вы можете использовать postMessage. Приведенный пример очень похож на ваш.
В моем случае я открыл всплывающее окно при щелчке по ссылке на родительской странице. Чтобы обновить родителя при закрытии дочернего элемента, используя
window.opener.location.reload();
в дочернем окне вызвано повторно открыть дочернее окно (возможно, из-за состояния просмотра, я думаю. Исправьте меня, если я ошибаюсь). Поэтому я решил не перезагружать страницу в родительском и загружать страницу, снова присваивая ей тот же url.
Чтобы избежать всплывающего всплывающего окна после закрытия всплывающего окна, это может помочь,
window.onunload = function(){
window.opener.location = window.opener.location;};
Попробуйте
self.opener.location.reload();
Откройте родительский элемент текущего окна и перезагрузите его.
Вы можете добраться до главной страницы с помощью родительской команды (родительское окно) после шага, который вы можете сделать все...
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>
Следующий код справится с обновлением post post post:
function ManageQB_PopUp() {
$(document).ready(function () {
window.close();
});
window.onunload = function () {
var win = window.opener;
if (!win.closed) {
window.opener.location.reload();
}
};
}