JavaScript ve PHP ile giden bağlantıları izleme

3 Cevap javascript

JQuery kullanarak denedim ama çalışmıyor.

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

3 Cevap

Eğer yaklaşım iki şeyi değiştirmek gerekir iyi sonucu almak için

  1. onmousedown yerine click kullanın - zaten navigasyon olduğu gibi izleme isteği tamamlamak için fazladan birkaç milisaniyede olsun bu şekilde, aksi takdirde tarayıcı anda tüm izci bağlantısı başlatmak olmayabilir uzakta orijinal sayfadan. Olumsuz tıklayarak kullanıcı tıklama bitirmek olmayabilir beri, bazı yanlış-pozitif sayılarını alabilirsiniz (örn. aşağı mousebutton tutar ve uzak bağlantıdan imleci hareket eder) ama genel olarak bunu yapmak için istekli olmalıdır bir fedakarlık olduğunu - izleme daha iyi kalite düşünüyor.
  2. Bunun yerine bir Ajax çağrısı ($.post('...')) bir görüntü ön-Alıcısı kullanabilirsiniz (new Image().src='...'). Eğer sadece sunucuya bir istek yapmak istiyorum, zaten çıkan "resmi" kullanmak istemiyorum çünkü izci bir görüntü olmadığı gerçeği bu durumda geçerli değildir. Biraz daha fazla zaman alır ve tarayıcı zaten kitaptan eğer başarısız olabilir yani Ajax arama iki yönlü bir bağlantısı var ama görüntü ön fetcher sadece sunucuya istek gönderir ve bir şey geri almak ya da eğer gerçekten önemli değil değil.

Yani çözüm bu gibi bir şey olacaktır:

<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>

Bunun yerine bir php izleme komut dosyasını aramak için JavaScript kullanarak, sadece doğrudan izleme komut link ve bu da nihai hedef, böyle bir şey için tepki yönlendirmek olabilir:

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

ve PHP script, izleme şeyler yapmak sonra:

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

Belirtildiği gibi, sorun DOM yüklendikten sonra komut kaçmıyoruz değildir. Sen $(function() { } içinde jQuery komut sararak bunu düzeltmek, gibi pek yapabilirsiniz:

Bu çalışır:

<!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>

Burada eylem görmek: http://jsbin.com/imomo3