Можно ли отследить посетителя, который уходит или переходит на другие сайты?

Можно ли отслеживать посетителей, которые покидают или переходят на другие сайты, например, задавать вопросы только тогда, когда они хотят перейти на другие сайты или с другим доменным именем? я пишу этот код

<script language="JavaScript">
  window.onbeforeunload = confirmExit;
  function confirmExit()
  {
    return "leave?";
  }
</script>

Но этот код работает всегда, даже на моих собственных страницах. Я хочу, чтобы этот код запускался только в том случае, если посетители переходят в другой домен, указывая URL-адрес (а не по ссылкам). Является ли это возможным? Спасибо


person bijakas2    schedule 12.05.2012    source источник
comment
Я бы не посещал ваш сайт снова, если бы там была такая ошибка.   -  person Emil Vikström    schedule 12.05.2012


Ответы (3)


Думаю, это задача для браузерного плагина, а не скрипта страницы. JS не может знать, что пользователь делает за пределами страницы.

Если бы это было возможно, это была бы совершенно новая проблема безопасности, проблема конфиденциальности, и я не буду посещать ваш сайт.

person Joseph    schedule 12.05.2012

Поскольку вы отметили jquery в этом вопросе, я думаю, вы уже используете http://jquery.com/

<script language="JavaScript">
  $(document).ready(function(){
       $("a").click(function(){
       if( fnGetDomain(document.location) == fnGetDomain($(this).attr("href")) )
       {
            return true;
       }
       else{
            return confirm("Leave page?");
       }

   });
});
function fnGetDomain(url) {
  return url.match(/:\/\/(.[^/]+)/)[1];
}
</script>

Вы можете использовать document.location.href вместо document.location, если есть какие-либо проблемы

person Imdad    schedule 12.05.2012
comment
Нет, я имею в виду посещения с использованием прямого URL без использования ссылок. Но спасибо за ваше предложение - person bijakas2; 12.05.2012

Я пробовал кое-что здесь, не уверен, что это работает во всех случаях...

window.onbeforeunload = confirmExit;

function confirmExit(event)
{
    console.log(event);
    console.log("Current : " + event.srcElement.domain);
    console.log("Target : " + event.target.domain);
    if (event.srcElement.domain != event.target.domain)
    {
        return "leave ?";
    }
    else
    {
        // staying here
    }
}​
person ChristopheCVB    schedule 12.05.2012