使用Javascript和PHP跟踪传出链接

使用Javascript和PHP跟踪传出链接,javascript,php,jquery,click,Javascript,Php,Jquery,Click,我尝试过使用jQuery,但它不起作用 <script> $("a").click(function () { $.post("http://www.example.com/trackol.php", {result: "click" }, "html"); }); </script> <a href="http://www.google.com">out</a> $(“a”)。单击(函数(){ $.post(

我尝试过使用jQuery,但它不起作用

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

$(“a”)。单击(函数(){
$.post(”http://www.example.com/trackol.php“,{结果:“单击”
},“html”);
});

您可以直接链接到跟踪脚本,然后让它将响应重定向到最终目标,而不是使用JavaScript调用php跟踪脚本,如下所示:

<a href="http://www.example.com/trackol.php?dest=http://www.google.com">out</a>
<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>

您不必使用JavaScript调用php跟踪脚本,只需直接链接到跟踪脚本,然后让它将响应重定向到最终目标,如下所示:

<a href="http://www.example.com/trackol.php?dest=http://www.google.com">out</a>
<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>

如前所述,问题是在加载DOM后没有运行脚本。可以通过将jQuery脚本包装在
$(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>

使用JavaScript和PHP跟踪传出链接

$(函数(){ $('a')。单击(函数(){ $.post($)http://www.example.com/trackol.php“,{result:'单击'},'html'); }); });

查看此处的操作:

如前所述,问题在于加载DOM后您没有运行脚本。您可以通过将jQuery脚本包装在
$(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>

使用JavaScript和PHP跟踪传出链接

$(函数(){ $('a')。单击(函数(){ $.post($)http://www.example.com/trackol.php“,{result:'单击'},'html'); }); });

请参见此处的操作:

为了获得最佳效果,您应该改变方法中的两个方面

  • 使用
    onmousedown
    而不是
    单击
    ——这样,您可以多获得几毫秒时间来完成跟踪请求,否则浏览器可能根本无法启动到您的跟踪器的连接,因为它已经从原始页面导航出去了。缺点是,您可能会得到一些假阳性计数,因为icking用户可能无法完成单击(例如,按住鼠标按钮并将光标从链接上移开),但总的来说,考虑到更好的跟踪质量,您应该愿意做出牺牲
  • 不要使用Ajax调用(
    $.post(“…”)
    )而使用图像预取器(
    new image().src=“…”
    )。在这种情况下,跟踪器不是图像这一事实并不相关,因为您不想使用生成的“图像”无论如何,您只需要向服务器发出请求。Ajax调用是一种双向连接,因此如果浏览器已经离开,则需要花费更多的时间,并且可能会失败,但是图像预取器只会将请求发送到服务器,而您是否得到一些东西并不重要
  • 因此,解决方案如下:

    <a href="http://www.example.com/trackol.php?dest=http://www.google.com">out</a>
    
    <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>
    
    
    $(文档).ready(函数(){
    $(“a”).mousedown(函数(){
    新建图像().src=”http://www.example.com/trackol.php?result=click";
    });
    });
    
    为了获得最佳效果,您应该改变方法中的两个方面

  • 使用
    onmousedown
    而不是
    单击
    ——这样,您可以多获得几毫秒时间来完成跟踪请求,否则浏览器可能根本无法启动到您的跟踪器的连接,因为它已经从原始页面导航出去了。缺点是,您可能会得到一些假阳性计数,因为icking用户可能无法完成单击(例如,按住鼠标按钮并将光标从链接上移开),但总的来说,考虑到更好的跟踪质量,您应该愿意做出牺牲
  • 不要使用Ajax调用(
    $.post(“…”)
    )而使用图像预取器(
    new image().src=“…”
    )。在这种情况下,跟踪器不是图像这一事实并不相关,因为您不想使用生成的“图像”无论如何,您只需要向服务器发出请求。Ajax调用是一种双向连接,因此如果浏览器已经离开,则需要花费更多的时间,并且可能会失败,但是图像预取器只会将请求发送到服务器,而您是否得到一些东西并不重要
  • 因此,解决方案如下:

    <a href="http://www.example.com/trackol.php?dest=http://www.google.com">out</a>
    
    <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>
    
    
    $(文档).ready(函数(){
    $(“a”).mousedown(函数(){
    新建图像().src=”http://www.example.com/trackol.php?result=click";
    });
    });
    
    该脚本是在onload事件之后运行的吗?(还是在解析dom之后?),否则$(“a”)选择器将与以下链接不匹配!该脚本是在onload事件之后运行的吗?(还是在解析dom之后?),否则$(“a”)选择器将不匹配选择器将与以下链接不匹配!当然,这是假设跟踪脚本在您的服务器上。虽然这是一种可能性,但可能最好使用JS进行跟踪,因此搜索引擎会搜索正确的链接。您也可以让PHP输出普通链接,并使用JS自动为它们添加前缀,如
    http://www.example.com/trackol.php?dest=
    。当然,这是假设跟踪脚本在您的服务器上。虽然这是一种可能性,但使用JS进行跟踪可能会更好,因此搜索引擎会搜索正确的链接。您也可以让php输出普通链接,并使用JS自动为它们添加前缀,如
    http://www.example.com/trackol.php?dest=