Basado en la respuesta de Mohammed Radwan, se me ocurrió la siguiente solución jQuery. Básicamente, lo que hace es realizar un seguimiento de lo que la gente de iFrame está planeando. Luego, si la ventana se vuelve borrosa, lo más probable es que el usuario haya hecho clic en el banner del iframe.
el iframe debe colocarse en un div con un id, para asegurarse de saber en qué iframe hizo clic el usuario:
<div class='banner' bannerid='yyy'>
<iframe src='http://somedomain.com/whatever.html'></iframe>
<div>
entonces:
$(document).ready( function() {
var overiFrame = -1;
$('iframe').hover( function() {
overiFrame = $(this).closest('.banner').attr('bannerid');
}, function() {
overiFrame = -1
});
... esto mantiene overiFrame en -1 cuando no se cierran los iFrames, o se establece el 'bannerid' en el div de envoltura cuando se flota un iframe. Todo lo que tiene que hacer es verificar si 'overiFrame' está configurado cuando la ventana se vuelve borrosa, así: ...
$(window).blur( function() {
if( overiFrame != -1 )
$.post('log.php', {id:overiFrame}); /* example, do your stats here */
});
});
Solución muy elegante con un pequeño inconveniente: si un usuario presiona ALT-F4 al pasar el mouse sobre un iFrame, lo registrará como un clic. Sin embargo, esto solo sucedió en Firefox, IE, Chrome y Safari no lo registraron.
Gracias de nuevo Mohammed, solución muy útil!