Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Какой универсальный способ фиксировать в БД факт покидания пользователем страницы? (https://javascript.ru/forum/misc/79072-kakojj-universalnyjj-sposob-fiksirovat-v-bd-fakt-pokidaniya-polzovatelem-stranicy.html)

raja 13.12.2019 10:33

Какой универсальный способ фиксировать в БД факт покидания пользователем страницы?
 
если в конце функции возвращать false, то событие записывается в базу, но появляется алерт с просьбой подтвердить уход со страницы. без return false в базу ничего не записывается.
window.onbeforeunload = function (e) { 
            // Ловим событие для Interner Explorer 
            var e = e || window.event; 
            const request5 = new XMLHttpRequest();
            const url = "https://cors-anywhere.herokuapp.com/http://fixer.ru/cabinet/tracker/hit.php";
            user_href = encodeURI(document.location.href);
            browser = navigator.appName;
            browser_version = navigator.appVersion;
            const params = "user_id=" + UserId + '&href=' + user_href + '&browser=' + browser + '&browser_version=' + browser_version + '&type=exit';
 
            request5.responseType = "json";
            request5.open('POST', url, true);
            request5.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
             
            request5.addEventListener("readystatechange", () => {
             
                if (request5.readyState === 4 && request5.status === 200) {
                    let obj = request5.response;
                    console.log('ваш уход со страницы добавлен в базу: '+obj);  
                }
            });
            request5.send(params);
            return false;
        };

Но мне нужно делать это незаметно для пользователя безо всяких всплывающих окон. как это сделать?

Rise 13.12.2019 11:30

А всякие Google Analytics и Яндекс.Метрика, которые следят за поведением пользователя, вам не подходят?

destus 13.12.2019 11:40

raja,
https://developer.mozilla.org/ru/doc...tor/sendBeacon


Часовой пояс GMT +3, время: 18:18.