Com base na resposta de Mohammed Radwan, vim com a seguinte solução jQuery. Basicamente, o que faz é acompanhar o que as pessoas do iFrame estão pairando. Então, se a janela ficar embaçada, provavelmente significa que o usuário clicou no banner iframe.
o iframe deve ser colocado em uma div com um ID, para garantir que você saiba em qual iframe o usuário clicou:
<div class='banner' bannerid='yyy'>
<iframe src='http://somedomain.com/whatever.html'></iframe>
<div>
tão:
$(document).ready( function() {
var overiFrame = -1;
$('iframe').hover( function() {
overiFrame = $(this).closest('.banner').attr('bannerid');
}, function() {
overiFrame = -1
});
... isso mantém o overiFrame em -1 quando nenhum iFrames é pairado ou o 'bannerid' definido na divisão de quebra automática quando um iframe é pairado. Tudo o que você precisa fazer é verificar se 'overiFrame' está definido quando a janela fica embaçada, assim: ...
$(window).blur( function() {
if( overiFrame != -1 )
$.post('log.php', {id:overiFrame}); /* example, do your stats here */
});
});
Solução muito elegante com uma desvantagem menor: se um usuário pressionar ALT-F4 ao passar o mouse sobre um iFrame, ele o registrará como um clique. Porém, isso só aconteceu no FireFox, IE, Chrome e Safari não o registraram.
Mais uma vez obrigado Mohammed, solução muito útil!