Как отследить выход пользователя со страницы сайта, чтобы отправить запрос на сервер?

Ссылка скопирована
2 ответов

Я написал сайт на django с возможностью создавать статьи, сделал отдельную страницу для их добавления, использовал Tinymce в качестве WYSIWYG редактор, подключил к Tinymce возможность сохранения фотографий на сервер. Однако, если загрузить фотографии на сервер, но не сохранить изменения, то эти фотографии сами не удалятся. Я написал функцию, которая записывает в JSON какие фото были загружены и отправляю их на сервер, где другая функция их уже удаляет. Для отправки я использую navigator.sendBeacon, а для проверки закрытия страницы я попробовал использовать уже все, что возможно: pagehide, unload, visabilityState, но все они работают не всегда, особенно на мобилках. Какой возможен вариант отслеживать выход пользовать с сайта? Может как-то через сессию или что-то подобное. Очень нужно

Дополнительно:

Не проще просто написать скрипт, которые удаляет устаревшие файлы, скажем, через сутки?

Ответы:

1. Записываешь добавленные изображения в массив.
2. При нажатии создать запись отправляешь данные контента + изображения массивом.
3. Сохраняешь изображения и контент на сервере как тебе угодно.
4. Не переживаешь, что пользователь загрузит изображение, но не сохранит статью.

  • я так и делаю сейчас. меня интересует как отследить закрытие вкладки браузера, перезагрузку и т.д
  • KRAcoder, Зачем тебе в таком случае отслеживать перезагрузку и закрытие вкладки?
    Картинки не загружены на сервер, контент не сохранен - ну и фиг с ним, разве нет?)
    Вот примитивный пример https://codesandbox.io/s/tinymce-forked-26mj36?fil...
    Картинки и сам контент будет отправлен одним запросом.

    Как отследить выход пользователя со страницы сайта, чтобы отправить запрос на сервер?

  • Виктор Майоров, этот редактор работает таким образом, что ты сам прописываешь код сохранение картинки, и их нужно сохранять сразу на сервер, чтобы они отображались в поле редактирования
  • KRAcoder, ок, тогда так)
    https://codesandbox.io/s/tinymce-forked-26mj36?fil...

    В этом случае переопределяем загрузку, делаем вид, что загрузку произошла и вставляем blob. при нажатии на кнопку меняем все blob на тот url где будут лежать изображения, в идеале сохранять с таким же названием в данном случае или же на фронте конвертировать/искажать название по какой-либо формуле. ну и все, дело за малым, отправляем данные на сервак.

    Как отследить выход пользователя со страницы сайта, чтобы отправить запрос на сервер?

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь Волков Ответ

Для отслеживания выхода пользователя со страницы сайта и отправки запроса на сервер можно использовать различные методы. Один из наиболее распространенных способов - это использование события "beforeunload" в JavaScript.

Пример кода на JavaScript:

window.addEventListener('beforeunload', function (e) {
    // Отправляем запрос на сервер
    fetch('/logout', {
        method: 'POST',
        body: JSON.stringify({user: 'username'}),
        headers: {
            'Content-Type': 'application/json'
        }
    });
});

window.addEventListener('beforeunload', function (e) { // Отправляем запрос на сервер fetch('/logout', { method: 'POST', body: JSON.stringify({user: 'username'}), headers: { 'Content-Type': 'application/json' } }); });

В данном примере, когда пользователь покидает страницу сайта, будет отправлен POST запрос на сервер с информацией о выходе пользователя (например, его имя пользователя).

Также можно использовать другие методы отслеживания выхода пользователя, например, отправку запроса на сервер при закрытии вкладки браузера или при нажатии кнопки "выход".

Если вы используете PHP на сервере, вы можете обработать этот запрос и выполнить необходимые действия, например, обновить статус пользователя в базе данных или выполнить какие-то другие операции.

Не забывайте, что отслеживание действий пользователей на сайте должно быть согласовано с политикой конфиденциальности и обязательно уведомлять пользователей о том, что их действия могут быть отслежены.

Другие ответы (1) Ответить на вопрос
Павел Админов

Для отслеживания выхода пользователя со страницы сайта и отправки запроса на сервер можно использовать различные методы и технологии. Один из наиболее распространенных способов - это использование JavaScript событий.

Прежде всего, необходимо добавить обработчик события на событие beforeunload или unload, которое срабатывает перед выходом пользователя со страницы. В этом обработчике можно отправить запрос на сервер с помощью AJAX.

Пример кода на JavaScript:

window.addEventListener('beforeunload', function(event) {
  // Отправка запроса на сервер
  var xhr = new XMLHttpRequest();
  xhr.open('POST', 'https://example.com/trackExit', true);
  xhr.setRequestHeader('Content-Type', 'application/json');
  xhr.send(JSON.stringify({userId: 123, page: window.location.href}));
});

window.addEventListener('beforeunload', function(event) { // Отправка запроса на сервер var xhr = new XMLHttpRequest(); xhr.open('POST', 'https://example.com/trackExit', true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.send(JSON.stringify({userId: 123, page: window.location.href})); });

Также можно использовать методы отправки запросов на сервер, предоставляемые библиотеками, такими как jQuery:

$(window).on('beforeunload', function() {
  // Отправка запроса на сервер
  $.ajax({
    type: 'POST',
    url: 'https://example.com/trackExit',
    data: JSON.stringify({userId: 123, page: window.location.href}),
    contentType: 'application/json'
  });
});

$(window).on('beforeunload', function() { // Отправка запроса на сервер $.ajax({ type: 'POST', url: 'https://example.com/trackExit', data: JSON.stringify({userId: 123, page: window.location.href}), contentType: 'application/json' }); });

Помимо этого, можно использовать другие методы отслеживания действий пользователя, такие как события клика на ссылки или кнопки, время пребывания на странице и другие параметры поведения пользователя. Важно учитывать, что некоторые методы могут быть более надежными и эффективными в зависимости от конкретной задачи.

Надеюсь, данное объяснение поможет вам решить проблему отслеживания выхода пользователя со страницы сайта и отправки запроса на сервер. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно