Отслеживание исходящих ссылок с помощью Javascript и PHP

58
6

Я пробовал его с помощью jQuery, но он не работает.


<script>
$("a").click(function () {
$.post("http://www.example.com/trackol.php", {result: "click"
}, "html");
});
</script>
<a href="http://www.google.com">out</a>

спросил(а) 2010-01-16T18:27:00+03:00 10 лет, 9 месяцев назад
1
Решение
115

Чтобы получить наилучшие результаты, вы должны изменить две вещи в своем подходе


    Используйте onmousedown вместо click - таким образом вы получите несколько дополнительных миллисекунд для завершения запроса на отслеживание, иначе браузер не сможет запустить соединение с вашим трекером вообще, поскольку он уже перемещается от исходной страницы, Недостатком является то, что вы можете получить количество ложных положительных результатов, так как клик пользователя не может завершить клик (например, держит кнопку мыши и перемещает курсор от ссылки), но в целом это жертва, которую вы должны сделать, учитывая лучшее качество отслеживания.
    Вместо вызова Ajax ($.post('...')) используйте предварительный выбор изображения (new Image().src='...'). Тот факт, что трекер не является изображением, в данном случае не имеет отношения к делу, потому что вы не хотите использовать итоговое "изображение" в любом случае, вы просто хотите сделать запрос на сервер. Ajax-вызов - это двухстороннее соединение, поэтому требуется немного больше времени и может выйти из строя, если браузер уже перемещается, но предварительный приемщик изображений просто отправляет запрос на сервер, и на самом деле не имеет значения, получаете ли вы что-то или нет.

Итак, решение будет примерно таким:


<script>
$(document).ready(function() {
$("a").mousedown(function (){
new Image().src= "http://www.example.com/trackol.php?result=click";
});
});
</script>

<a href="http://www.google.com">out</a>

ответил(а) 2010-01-16T20:12:00+03:00 10 лет, 9 месяцев назад
70

Вместо того, чтобы использовать JavaScript для вызова php tracking script, вы можете просто напрямую связать свое отслеживание script и перенаправить его в конечный пункт назначения, например:


<a href="http://www.example.com/trackol.php?dest=http://www.google.com">out</a>

и в PHP script, после того как вы сделаете свой материал для отслеживания:


...
header("Location: $dest");

ответил(а) 2010-01-16T18:40:00+03:00 10 лет, 9 месяцев назад
57

Как уже упоминалось, проблема заключается в том, что вы не запускаете script после загрузки DOM. Вы можете исправить это, обернув jQuery script внутри $(function() { }, например:


Это работает:


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Tracking outgoing links with JavaScript and PHP</title>
</head>
<body>
<p><a href="http://www.google.com/">Test link to Google</a></p>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script>
$(function() {
$('a').click(function() {
$.post('http://www.example.com/trackol.php', { result: 'click' }, 'html');
});
});
</script>
</body>
</html>

Смотрите здесь: http://jsbin.com/imomo3

ответил(а) 2010-01-16T18:47:00+03:00 10 лет, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема