Javascript: как получить ссылку на объект дочернего окна после обновления родительского окна

Я пытаюсь реализовать функцию открытия всплывающего окна при посещении домашней страницы (родительского окна). У меня есть функция setInterval, которая проверяет, закрыто ли всплывающее окно или нет. Если он закрыт, он снова открывает всплывающее окно.

Но когда родительское окно обновляется, а всплывающее окно (дочернее окно) закрывается. Он не открывается повторно, поскольку объект окна становится нулевым, а условие if(Window !== null && Window.closed) не выполняется. Любая помощь в том, как заставить всплывающее окно перезапускаться при закрытии после обновления домашней страницы или как получить ссылку на объект дочернего окна после обновления родительского окна.

var Window = null;

    var WindowLauncher = function() {
        //Timer to check if window is closed
        var timer = setInterval(function() {
            if(Window !== null && Window.closed) {
                try{
                    alert("DO NOT CLOSE WINDOW");
                    this.launchWindow();
                } catch (e) {
                    log.error('Window is closed but we are unable to open the login popup. %s', e.getMessage()).withException(e);
                }
            }
        }, 1000);
    };

WindowLauncher.prototype.init = function() {
        // has a event subscription code. When a timeout event triggers it calls the launchWindow()
    };


WindowLauncher.prototype.launchWindow = function () {
        var width = 360;
        var height = 520;
        var left = (screen.width / 2) - (width / 2);
        var top = (screen.height / 2) - (height / 2);
        Window = window.open(URL, true, 'width=' + width + ',height=' + height + ',menubar=no,status=no,toolbar=no,left=' + left + ',top=' + top);
    }

person Harshith    schedule 20.10.2020    source источник


Ответы (1)


Для ссылки на объект дочернего окна после обновления родительского окна. Объект дочернего окна должен быть создан с использованием имени окна.

window_obj = window.open(URL, "window-name", .... (window features) )

Как и при обновлении родительского окна, ссылка window_obj теряется и становится нулевой. Поэтому извлеките ссылку на окно, используя имя окна.

if(window_obj.location.href === "about:blank"){
    window_obj.close() // closes the empty pop up window
    window_obj = window.open(URL, "window-name", .... (window features) ) // opens a new window
}
else{
   window_obj.focus() // if the window is already open it just puts focus on that window 
}

Когда дочернее всплывающее окно закрывается после обновления родительского окна. Мы можем получить ссылку на дочернее всплывающее окно.

person Harshith    schedule 19.11.2020