JSFiddle - React, Tailwind, and code Playground

by Renilson Meneguci

JavaScript

(function ($) {
        var refreshKeyPressed = false;
        var modifierPressed = false;

        var f5key = 116;
        var rkey = 82;
        var modkey = [17, 224, 91, 93];

        //Verifica se submit
        var submitting = false;
        $('form').submit(function (e) {
            submitting = true;
        });

        // verifica as chaves de atualização
        $(document).bind(
            'keydown',
            function (evt) {
                // busca por atualização
                if (evt.which == f5key || window.modifierPressed && evt.which == rkey) {
                    refreshKeyPressed = true;
                }

                // checa se há modificação
                if (modkey.indexOf(evt.which) >= 0) {
                    modifierPressed = true;
                }
            }
        );

        // verifica as chaves de atualização
        $(document).bind(
            'keyup',
            function (evt) {
                // verifica a chave
                if (evt.which == f5key || evt.which == rkey) {
                    refreshKeyPressed = false;
                }

                // checa se há modificação
                if (modkey.indexOf(evt.which) >= 0) {
                    modifierPressed = false;
                }
            }
        );
        $(window).bind('beforeunload', function (event) {
            var message = "not refreshed";

            //submit é falso, realiza ação
            if (!submitting) {
                //Se atualizou entra aqui
                if (refreshKeyPressed) {
                    message = "refreshed";

                    //retorna a mensagem apenas para testes
                    event.returnValue = message;
                    return message;
                }

                //Senão, chama a action
                //$.ajax({
                //    url: BASE_URL + 'Testes/Aqui',
                //    type: 'POST'
                //});

                event.returnValue = message;
      ...