Обнаружение события закрытия всплывающего окна javascript

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

function start() {
    $.ajax({
        type: "post",
        dataType: "html",
        url: 'client_get',
        crossDomain: true,
        data: {
            'id': '123'
        },
        success: function(response) {
            try {
                var json = JSON.parse(response);
            } catch (err) {
                start();
            }
            jQuery(document).ready(function($) {
                var close_interval = setInterval(function() {
                    var newwindow = window.open('https://www.example.com/key?v=' + json[0]['url'], 'key', 'width=800,height=600,status=0,toolbar=0');
                    if (newwindow.close) {
                        console.info("Closed");
                        clearInterval(close_interval);
                    }
                }, 1000);
            });
        }
    });
}

#sebpiq я пробовал этот код, у меня тоже не работает ..

davukocofe 27.05.2018 12:25

Я бы начал с тестирования без вызова ajax, чтобы вы могли лучше изолировать проблему. Немного очистите свой код, попробуйте только всплывающую часть.

sebpiq 27.05.2018 12:29

Да, я проверил, что изменение URL-адреса не является ошибкой в ​​одном URL-адресе, он также показывает закрытый .... Этот код .close не работает

davukocofe 27.05.2018 12:37

Я пытаюсь не открывать его, есть ли способ сделать то же самое со всплывающим окном?

davukocofe 27.05.2018 12:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
143
1

Ответы 1

Для захвата события закрытия окна требуется обработчик событий onbeforeunload:

var new_window = window.open('some url') new_window.onbeforeunload = function(){ my code}

так что в вашем случае:

function start() {
$.ajax({
    type: "post",
    dataType: "html",
    url: 'client_get',
    crossDomain: true,
    data: {
        'id': '123'
    },
    success: function (response) {
        try {
            var json = JSON.parse(response);
        } catch (err) {
            start();
        }
        jQuery(document).ready(function ($) {
            var close_interval = setInterval(function () {
                var newwindow = window.open('https://www.example.com/key?v=' + json[0]['url'], 'key', 'width=800,height=600,status=0,toolbar=0');
                newwindow.onload = function() {
                    newwindow.onbeforeunload = function() {
                        console.info("Closed");
                        clearInterval(close_interval);
                    }
                }
            }, 1000);
        });

    }
});
}

Другие вопросы по теме