Sulla base della risposta di Mohammed Radwan, ho trovato la seguente soluzione jQuery. Fondamentalmente ciò che fa è tenere traccia di ciò che le persone di iFrame sono in bilico. Quindi, se la finestra si sfoca, molto probabilmente significa che l'utente ha fatto clic sul banner iframe.
l'iframe dovrebbe essere inserito in un div con un ID, per essere sicuro di sapere su quale iframe l'utente ha fatto clic:
<div class='banner' bannerid='yyy'>
<iframe src='http://somedomain.com/whatever.html'></iframe>
<div>
così:
$(document).ready( function() {
var overiFrame = -1;
$('iframe').hover( function() {
overiFrame = $(this).closest('.banner').attr('bannerid');
}, function() {
overiFrame = -1
});
... questo mantiene overiFrame a -1 quando non viene spostato alcun iFrame o il "bannerid" impostato nel div wrapping quando viene sospeso un iframe. Tutto quello che devi fare è controllare se 'overiFrame' è impostato quando la finestra si sfoca, in questo modo: ...
$(window).blur( function() {
if( overiFrame != -1 )
$.post('log.php', {id:overiFrame}); /* example, do your stats here */
});
});
Soluzione molto elegante con un piccolo aspetto negativo: se un utente preme ALT-F4 quando passa il mouse su un iFrame, lo registrerà come un clic. Questo è accaduto solo in FireFox, tuttavia IE, Chrome e Safari non lo hanno registrato.
Grazie ancora Mohammed, soluzione molto utile!