Contar los clicks pero con enlaces directos
Lunes, Febrero 12th, 2007Si tienes un directorio te interesará poder contar los clicks que hacen en los links salientes pero también te interesa que esos enlaces cuenten para los buscadores (por que de otra manera no les gustará demasiado a los webmasters que envien sus webs)
Al parecer son dos cosas no compatibles pero mediante javascript podemos conseguirlo y con JQuery de forma fácil. La táctica consiste en tener los links directos, sin pasar por ningun script que cuente los clicks, algo como esto:
<a href="http://www.google.com">Google.com</a>
Por otra parte mediante javascript detectamos cuando se hace click en esos enlaces y redireccionamos el enlace hacía nuestro script contador. Con JQuery es tan simple como esto:
<script type='text/javascript'>
$(window).load( function() {
$('a.link_out').bind("click", function() {
url = $(this).attr("href");
window.location = "/contador.php?url=" + url;
return false;
});
});
</script>
y en los links les ponemos la clase link_out:
<a href="http://www.google.com" class="link_out">Google.com</a>
Y listo, sólo faltaría crear el archivo que cuenta las visitas y hace la redirección pero eso lo dejaremos para vosotros o para otro día.
Otra opción, tal como dice ouyeah en los comentarios sería contabilizar el click mediante ajax y no hacer ninguna redirección:
<script type='text/javascript'>
$(window).load( function() {
$('a.link_out').bind("click", function() {
url = $(this).attr("href");
$.post("go.php",
{ "url": url },
function() {
window.location = url;
} );
return false;
});
});
</script>
Y la verdad es que si parece más elegante y sólo se me ocurre que puede tener algún problema en navegadores antiguos que no soporten ajax aunque tampoco tengo claro si en estos navegadores funcione JQuery.
Vodka comenta que no le funcionaba y ha tenido que modificar algo el código:
En lugar de usar:
$('a.link_out')
ha usado
$(”a”).filter(”.link_out”)
