Подтвердить что ты не робот

Обнаруживать, когда пользователь покидает веб-сайт

Я пытаюсь создать свою собственную библиотеку доступа к веб-сайту (для удовольствия), такую ​​как Google Analytics, где я могу обнаружить, когда пользователь обращается к моему сайту, какие страницы они просматривают и т.д.

Есть ли способ определить, когда пользователь покидает страницу &/или оставляет сайт навсегда?

Я успешно закодировал (на python) обнаружение, когда пользователь 1-го доступа к моему сайту (с использованием файла cookie) и как определить, какие страницы они просматривают. Но я не знаю, как я могу обнаружить, когда пользователь покидает сайт навсегда?

Есть ли способ в javascript (может быть, я могу обнаружить, когда страница /URL меняется?). Я знаю, что в HTTP есть заголовок referrer, который сообщает мне, откуда пришел пользователь, может быть, когда пользователь перейдет на другой сайт (вне моего), я могу быть уведомлен об этом (потому что я буду реферером в этом HTTP-запросе)? Правильно ли я?

4b9b3361

Ответ 1

С помощью jquery вы можете вызвать это:

$(window).bind('beforeunload', function() {
    // ajax call perhaps
    // triggering a write to db or filesystem...
});

Чистый javascript способ:

<html>
<head>
<script>
function closeIt()
{
  return "Any string value here forces a dialog box to \n" + 
         "appear before closing the window.";
}
window.onbeforeunload = closeIt;
</script>
</head>
<body>
  <a href="http://www.somewhere.com">Click here to navigate to 
      www.somewhere.com</a>
</body>
</html>

Ответ 2

Как только пользователь будет играть по правилам, вы ожидаете, что onbeforeunload будет работать. Это означает закрытие вкладки или закрытие окна или переход на другой сайт.
Тем не менее, у вас нет способа достоверно определить это с помощью javascript, во многих случаях это невозможно, так как выключение браузера (ctrl + q), сбой браузера, история (назад) и опера, а некоторые версии хром ограничены поддержка onbeforeunload.

Если вы хотите обнаружить его с помощью высокой точности, вы должны периодически отправлять запросы Ajax, которые показывают, что пользователь "все еще жив". регистрируйте эти запросы в базе данных или файле и анализируйте их по временной последовательности.
Таким образом, если вы "ping" базы данных каждые 20 секунд, вы можете узнать из довольно простых запросов, которые браузер не "pinged" через некоторое время, и определить, что пользователь больше не находится на сайте.

Ответ 3

В JavaScript есть событие выгрузки, которое вы можете обработать. Например:

window.onunload = unloadPage;

function unloadPage()
{
 alert("unload event detected!");
}

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

Одна из идей заключается в том, чтобы установить переменную (возможно, в базе данных) в обработчик выгрузки (через вызов AJAX или что не так), а затем удалить ее, если пользователь сразу зайдет на другую страницу. Какая бы запись не удалялась (или деактивирована - мягкие удаления), является вашим последним событием выхода, прежде чем пользователь действительно отскочил от вашего веб-сайта или закрыл браузер.

Ответ 4

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

Но.

Мне бы лучше поместить на каждую страницу вашего сайта немного script, которые (скажем каждые 20-30 секунд) делают запрос GET на определенный URL-адрес на вашем сайте. Таким образом, вы можете отслеживать количество запросов каждого пользователя.

Ответ 5

Вы можете привязываться к окну .beforeunload или window.unload.

Ни один из этих методов не является очень надежным.