Foros del Web » Programando para Internet » Javascript »

trackear clicks de Adsense con Javascript

Estas en el tema de trackear clicks de Adsense con Javascript en el foro de Javascript en Foros del Web. Hola amigos, tengo el siguiente problema: esto tratando de acceder al evento de un iframe que pone google adsense en mi pagina, para saber en ...
  #1 (permalink)  
Antiguo 30/09/2011, 15:53
 
Fecha de Ingreso: diciembre-2010
Ubicación: caucasia
Mensajes: 17
Antigüedad: 13 años, 10 meses
Puntos: 0
Exclamación trackear clicks de Adsense con Javascript

Hola amigos, tengo el siguiente problema:

esto tratando de acceder al evento de un iframe que pone google adsense en mi pagina, para saber en el momento en que un usario hace click, cuando lo registro con jquery este no se lanza al dar click sobre el anuncio..como podria lograr que cuando de click sobre el anuncio se me ejecute un callback?

la estructura del anuncio es asi:
Código Javascript:
Ver original
  1. <ins>
  2.    <ins>
  3.        <iframe>
  4.              <html>
  5.                   <head></head>
  6.                   <body>
  7.                         <iframe>
  8.                               <head></head>
  9.                               <body>
  10.                                     <div>
  11.                                          <a>
  12.                                               <img />
  13.                                           </a>
  14.                                      </div>
  15.                               </body>
  16.                         </iframe>
  17.                   </body>
  18.              </html>
  19.        </iframe>
  20.    </ins>
  21. </ins>

y esta metida dentro de un div con id "banner"

intente $("#banner").click y $("#banner > ins").click y $("#banner iframe").click y ninguno funciono.

alguna idea?
Gracias.
  #2 (permalink)  
Antiguo 30/09/2011, 16:02
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: problema bastante molesto :S

buenas,
no es posible hacerlo de esa manera porque un iframe es un contexto distinto al documento que le posee. el evento ocurre dentro del iframe pero dicho evento no se translada a su contenedor. por tanto, no es posible.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 30/09/2011, 16:41
 
Fecha de Ingreso: diciembre-2010
Ubicación: caucasia
Mensajes: 17
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: problema bastante molesto :S

que podria hacer? para conseguir que pueda contar los clicks sobre ese iframe?

pense en tratar la imagen como un mapa y hacer algo asi como facebook cuando etiqueta tratando al aviso como la zona del mapa a clickar, pero no encuentro algun plugin que me facilite las cosas.

alguna idea? :/
  #4 (permalink)  
Antiguo 30/09/2011, 17:18
 
Fecha de Ingreso: diciembre-2010
Ubicación: caucasia
Mensajes: 17
Antigüedad: 13 años, 10 meses
Puntos: 0
Exclamación Respuesta: problema bastante molesto :S

por favor alguien puede ayudarme a solucionar este problema?
  #5 (permalink)  
Antiguo 30/09/2011, 17:48
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: problema bastante molesto :S

lamento no poder ayudarte, no estoy seguro si lo que quieres hacer es posible considerando que el iframe es un contenido externo a tu sitio web.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 30/09/2011, 20:22
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 10 meses
Puntos: 81
Respuesta: problema bastante molesto :S

No busques ni preguntas más, no es posible. Por un tema de seguridad no es posible acceder a los eventos dentro de un frame o un iframe cuya fuente esté dentro de otro contexto (entiendase con esto: otro dominio). Lo lamento.
  #7 (permalink)  
Antiguo 30/09/2011, 20:38
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: problema bastante molesto :S

Sólo una aclaración, por las dudas: es posible usar algún artificio para lograr una comunicación entre ventanas de diferentes dominios, aunque en el caso presente no sirva de nada. Una alternativa es usar un proxy escrito en lenguaje de servidor que simule que el dominio del iframe pertenece al dominio de la ventana en la que el iframe está incrustado: http://www.disegnocentell.com.ar/notas2.php?id=156
Otro artificio consiste en usar hashes, pero para esto es necesario tener la posibilidad de incrustar codigo javascript en el iframe con el cual queremos comunicarnos:
http://www.tagneto.org/blogcode/xfra..._1317436804785
  #8 (permalink)  
Antiguo 30/09/2011, 22:33
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 23 años
Puntos: 69
Respuesta: problema bastante molesto :S

Pero... ( y siempre hay un pero... )
Quizás no necesites acceder a los eventos internos de tu iframe para detectar un click. En su nivel más básico, cuando alguien hace click en un iframe, está activando el foco dentro de ese iframe, no?
Por qué no intentás hacer esto? (con jQuery, para facilitar)
Código Javascript:
Ver original
  1. $().ready(
  2.   // Primero identificamos si estamos parados arriba de un ad de Google
  3.   var overAdsense = false;
  4.  
  5.   $('ins > iframe').mouseover(function(){
  6.     overAdsense = true;
  7.   })
  8.   .mouseout(function(){
  9.     overAdsense = false;
  10.   });
  11. );

Listo, primer punto cumplido. Tenemos la capacidad de saber si estamos con el mouse parados arriba de un Ad de Adsense. Esta es la parte más difícil.

Pero como decíamos recién, si podemos saber en qué momento hacemos foco en un lugar... entonces podemos saber automáticamente cuando dejamos de hacer foco en otro? Entonces, el momento fundamental en el que estamos haciendo click en un Ad... quién pierde foco?

El Objeto window.

Código Javascript:
Ver original
  1. //continuamos
  2. $(window).blur(function(){
  3.   if(overAdsense) {
  4.     /* aca no podemos hacer alerts o muchas otras cosas,
  5.         porque el click lo captura el iframe de google, asi que
  6.         vamos a guardar info haciendo una peticion ajax */
  7.     $.post({
  8.       url: 'http://nuestrodominio.com/script_que_captura.php',
  9.       data: {
  10.         adUrl: window.location.href,
  11.         adDate : Date()
  12.       }
  13.     });
  14.   }
  15. });

Sin embargo, este método tiene un gotcha, y es que podemos identificar clicks hechos sobre nuestros Ads de Adsense, pero si una persona hace click sobre una parte que no es click, también estaríamos levantando el evento y haciendo la llamada AJAX.

Ya me cuentan que les parece y si les pareció útil.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #9 (permalink)  
Antiguo 30/09/2011, 23:22
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: problema bastante molesto :S

Es ingenioso. Puede mejorarse usando el evento onunload u onbeforeunload en lugar de onblur. Con eso evitarías los falsos positivos
  #10 (permalink)  
Antiguo 01/10/2011, 07:31
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 23 años
Puntos: 69
Respuesta: problema bastante molesto :S

Seguramente es mejorable :D Siempre que dejo un poco de código en los Foros, espero que venga alguien más y me diga "hacelo mejor asi, o asá"... o "probé esto y funciona mejor". Vamos, que pasamos de un par de mensajes de "no se puede" a "Es mejorable" !! :)

Yo en particular tengo un problema, generalmente, con onUnload(). Me enseñaron que es mala palabra si estás creando páginas que tienen seteados headers de caché bastante estrictos, ya que onUnload hace que ciertos navegadores de mierda (coffcofffIEcoff) ignoren los headers y siempre hagan request de la página.

En sitios pequeños, no sería mayor problema, pero en donde trabajo, hay que comprar 30 servers más :P

Pero claro, si quieren mejorar el script y ver hasta donde lo podemos llevar... yo dichoso.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #11 (permalink)  
Antiguo 01/10/2011, 09:24
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: problema bastante molesto :S

Pero... si usás jQuery usás implicitamente el evento unload (para eliminar problemas de memoria en eventos y xhr).
Edito: estuve viendo lo que mencionás acerca de unload y caché aquí: http://www.webkit.org/blog/516/webki...-unload-event/
En esos casos supongo que habrá que conformarse con la versión que estás proponiendo, asumiendo que va a haber un alto porcentaje de indefinición (en ese caso yo no la usaría, la verdad). Y en esos casos habrá que usar un parche para jQuery (no miré en profundidad la última versión, pero no era algo que jQuery tuviera en cuenta en las anteriores.)

Última edición por Panino5001; 01/10/2011 a las 10:46

Etiquetas: funcion, html, molesto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:15.