2010-09-15 12 views
21

me gustaría hacer algo en la página cuando un usuario hace clic 'Me gusta'.Adjuntar un clic (evento) para el botón de Facebook 'Me gusta'?

pensé que algo tan simple como la siguiente funcionaría:

<script type="text/javascript"> 
    $(document).ready(function() { 

     $('.connect_widget_like_button clearfix like_button_no_like').live('click', function() { 
      alert('clicked'); 
     }); 
    }); 
</script> 

Este es el marco flotante que los suministros de Facebook para añadir el botón Me gusta a la página:

<iframe 
    id="FBLike" 
    src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.MySite.Com... blahblahblah" 
    scrolling="no" 
    frameborder="0" 
    style="border:none; overflow:hidden; width:450px; height:80px;" 
    allowTransparency="true"> 
</iframe> 

Mi script intenta enlazar una haga clic en evento en una etiqueta de anclaje que se carga en iFrame cuando se carga la página. Sin embargo, no funciona. ¿Hay alguna manera para que jQuery reconozca cuándo se hace clic en esto? Gracias

Respuesta

34

Facebook API no permite suscribirse al evento clic similar, pero permite suscribirse al igual que sucede evento (despedido cuando se haya completado la acción como):

FB.Event.subscribe('edge.create', function(response) { 
    // like clicked 
}); 

ver here.

+0

pero esto no se puede hacer en una pestaña, ¿verdad? ¿Alguna otra solución como http://www.facebook.com/901Tequila?v=ap4904458780, donde al hacer clic en el botón "Me gusta" te redirige a la pared del pin? – SteMa

+3

no funciona para iframe, solo XFBML fb: como –

+1

funciona pero se activa como 3 segundos después de hacer clic en mi aplicación. –

3

No puede usar JavaScript para acceder a elementos dentro de un iframe que no pertenece a la URL actual, ya que supongo que el dominio que está utilizando no es facebook.com, no podrá adjuntar un evento al como botón de esta manera.

4

hacer un PHP (o cualquier otro idioma que usa) El guión para rizar el origen de http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.MySite.Com... blahblahblah

Ponga la fuente de facebook en su página html, puede entonces usted puede hacer lo que quiera en JavaScript/jQuery con el código de Facebook.

Algunos ejemplos para el enrollamiento dentro de PHP - http://www.php.net/manual/en/curl.examples.php

+0

Eso es un trabajo bastante astuto alrededor, agradable :-) –

+0

También es más probable que sea en contra de su TOS/política. –

+0

Tengo serias dudas de que algo así podría funcionar. Haría que el botón sea igual de espaciable y Facebook no puede permitir eso. – Denis

2

Se puede detectar el evento 'me gusta' y 'no me gusta' de Facebook como el botón usando edge.create y edge.remove respectivamente.

+0

No tenía conocimiento del evento 'edge.remove'. ¿Tienes un enlace? –

-1

he encontrado un trabajo en torno a este problema que funciona bien con marco flotante. Se basa en una combinación de soluciones sugeridas aquí en stack-overflow. El primer paso es contar la cantidad de Me gusta en una página. Luego, almacena ese número en la variable global. Puedes hacer esto durante el evento de carga. En segundo lugar, use la solución sugerida en este enlace Detect Click into Iframe using JavaScript. Cuando un mouse deja un área específica, puede determinar si la cantidad de clics ha cambiado en función de la cantidad de clics anterior y la cantidad actual de clics.

El código para determinar el número de clics está disponible en este enlace http://jsfiddle.net/Takazudo/ function fetchLikeCount(url){ return $.Deferred(function(defer){ $.ajax({ dataType: 'jsonp', url: 'https://api.facebook.com/method/fql.query?callback=callback', data: { query: 'SELECT like_count FROM link_stat WHERE url="' + url + '"', format: 'JSON' } }).then(function(res){ try{ var count = res[0].like_count; defer.resolve(count); }catch(e){ reject(); } }, reject); function reject(){ defer.reject(';('); }; }).promise(); }.

Cuestiones relacionadas