2015-02-05 3 views
0

Есть ли способ использовать функцию OnUnload() JavaScript, чтобы узнать, к какому URL-адресу идет пользователь?Javascript - переводится URL-адрес на

Например, если мой код находится в page1.html, и пользователь нажимает на ссылку, чтобы http://example.com, есть ли способ для кода JavaScript, присутствующего в page1.html, чтобы получить URL "http://example.com" и дисплей/сохранить его перед страницей разгружен?

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

EDIT: Это выглядит невозможным, так как для моего бизнеса требуется, чтобы я не вносил изменений в содержимое страницы , за исключением добавления в файл javascript, где присутствует этот код.

+2

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

+1

Вы можете заменить все ссылки на странице системой переадресации, с которой вы работаете. например http://www.example.com?rd=http://example2.com – Hacketo

+0

Ах спасибо Далорзо, это то, что я тоже думал. Я пытаюсь создать что-то, что может отслеживать как можно больше данных с моего сайта, и отправлять его на удаленный сервер для ведения журнала. Но деловое требование состоит в том, что я не могу каким-либо образом изменить контент, за исключением того, чтобы включить файл javascript на страницу с необходимым кодом :( –

ответ

0

Игнорировать onBeforeUnload/onUnload, вам это не нужно. Вы можете сделать это с помощью простого обработчика щелчка, как это:

$('a').on('click', function(e) 
{ 
    e.preventDefault(); 
    var destinationLink = $(this).attr('href'); 

    $.post('/your/analytics/url', {link:destinationLink}, function() 
    { 
     // Success 
     window.location.href = destinationLink; 
    }); 
}); 

Это остановит любую ссылку работать, пока он не был представлен на ваши аналитики, так что это не идеальный вариант - вы должны убедиться, что когда-либо получает данные делает так как можно быстрее.

0

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

Код пыльник изменить URL в щелкнули ссылку только на пару микросекунд

$("a").on("click",function(e){ 
 
    // Save the current link 
 
    var h = this.href; 
 

 
    //Change the link of the current a 
 
    this.href = "http://www.example1.com/redirect.php?url="+encodeURI(h); 
 

 
    // replace the href with the original value on the next stack 
 
    setTimeout((function(my_link){ 
 
     return function(){ 
 
      my_link.href = h; 
 
     }; 
 
    })(this),0); 
 
});
<a href="http://www.example.com">my link</a>

+0

Точно, где в этом процессе я могу запросить мой сервер? Прямо перед функцией 'setTimeout'? –

+0

Я редактировал код. поскольку «www.example1.com» является вашим сервером, запрос делается по клику по ссылке, URL-адрес будет: «www.example1.com/redirect.php?url=http://www.example.com ', поэтому вам нужно иметь страницу redirect.php, которая извлекает параметр url и делает все, что вы хотите (проверьте реферер, если ссылка с вашего сайта ... зарегистрируйте его), а затем перенаправляйте URL-адрес. – Hacketo

+0

'setTimeout' только здесь, чтобы обрабатывать новый щелчок на вкладке, чтобы установить исходное значение в ссылке после щелчка, поскольку страница остается открытой – Hacketo

Смежные вопросы