Периодический сбой контейнерных креплений в Кубернетес

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

Like @Garry Английский сказал , отправка асинхронного запроса во время страницы onunload не будет работать, так как браузер убьет поток перед отправкой запроса. отправка запроса на синхронизацию должна работать.

Это было правильно до версии 29 Chrome, но в Chrome V 30 он неожиданно прекратил работу , как указано здесь .

Похоже, что единственный способ сделать это сегодня - использовать onbeforeunload событие , как предлагается здесь .

НО ПРИМЕЧАНИЕ: другие браузеры не позволят вы отправляете запросы Ajax в событии onbeforeunload вообще. так что вам нужно будет выполнить действие как в разгрузке, так и перед загрузкой, и проверить, было ли это уже сделано.

Что-то вроде этого:

var _wasPageCleanedUp = false;
function pageCleanup()
{
    if (!_wasPageCleanedUp)
    {
        $.ajax({
            type: 'GET',
            async: false,
            url: 'SomeUrl.com/PageCleanup?id=123',
            success: function ()
            {
                _wasPageCleanedUp = true;
            }
        });
    }
}


$(window).on('beforeunload', function ()
{
    //this will work only for Chrome
    pageCleanup();
});

$(window).on("unload", function ()
{
    //this will work for other browsers
    pageCleanup();
});

Надеется, что это поможет кто-нибудь.

1
задан Tomka Koliada 25 March 2019 в 21:34
поделиться