it-swarm.com.ru

Откройте всплывающее окно и обновите родительскую страницу при закрытии всплывающего окна.

Я открыл всплывающее окно с помощью window.open в JavaScript, я хочу обновить родительскую страницу при закрытии этого всплывающего окна. (Событие onclose?) Как я могу это сделать?

window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
83
ArMaN

Вы можете получить доступ к родительскому окну, используя ' window.opener ', поэтому напишите в дочернем окне что-то вроде следующего:

<script>
    window.onunload = refreshParent;
    function refreshParent() {
        window.opener.location.reload();
    }
</script>
207
Morrison

Во всплывающем окне нет события закрытия, которое вы можете прослушать.

С другой стороны, есть закрытое свойство, которое устанавливается в 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 пример !

31
Zuul

на вашей детской странице, поместите эти:

<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' />
12
Ray Cheng

window.open вернет ссылку на вновь созданное окно, при условии, что открытый URL-адрес соответствует Одинаковая политика происхождения

Это должно работать:

function windowClose() {
    window.location.reload();
}

var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;​
3
cranz

Я использую это: 

<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()''>

когда окно закрывается, оно обновляет родительское окно. 

3
Patrick Kershner

Если ваше приложение работает в браузере с поддержкой HTML5. Вы можете использовать postMessage . Приведенный здесь пример очень похож на ваш. 

1
Chris Li

Попробуй это

        self.opener.location.reload(); 

Откройте родительский элемент текущего окна и перезагрузите местоположение.

1
nmkyuppie

В моем случае я открыл всплывающее окно при нажатии на кнопку ссылки на родительской странице . Чтобы обновить родительский элемент при закрытии дочернего элемента, используя 

window.opener.location.reload();

в дочернем окне вызвало повторное открытие дочернего окна (возможно, из-за состояния просмотра, я думаю. Исправьте меня, если я ошибаюсь) . Поэтому я решил не перезагружать страницу в родительском и загружать страницу снова, назначая ей тот же URL ,.

Чтобы избежать повторного открытия всплывающего окна после закрытия всплывающего окна, это может помочь,

window.onunload = function(){
    window.opener.location = window.opener.location;};
1
Jitendra Sawant

Вы можете использовать приведенный ниже код на родительской странице.

<script>
    window.onunload = refreshParent;
    function refreshParent() {
      window.opener.location.reload();
    }
</script>
0
muqofa

Вы можете перейти на главную страницу с помощью родительской команды (parent is the window) после шага вы можете сделать все ...

    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 + "");
    } 
0
dewelloper

Следующий код сможет обновить закрытие родительского окна:

function ManageQB_PopUp() {
            $(document).ready(function () {
                window.close();
            });
            window.onunload = function () {
                var win = window.opener;
                if (!win.closed) {
                    window.opener.location.reload();
                }
            };
        }
0
UJS