Na podstawie odpowiedzi Mohammeda Radwana wymyśliłem następujące rozwiązanie jQuery. Zasadniczo śledzi to, co ludzie iFrame unoszą. Jeśli okno się rozmywa, najprawdopodobniej oznacza to, że użytkownik kliknął baner iframe.
element iframe należy umieścić w elemencie div z identyfikatorem, aby upewnić się, że wiesz, który element iframe kliknął użytkownik:
<div class='banner' bannerid='yyy'>
<iframe src='http://somedomain.com/whatever.html'></iframe>
<div>
więc:
$(document).ready( function() {
var overiFrame = -1;
$('iframe').hover( function() {
overiFrame = $(this).closest('.banner').attr('bannerid');
}, function() {
overiFrame = -1
});
... to utrzymuje overiFrame na poziomie -1, gdy żadne elementy iFrame nie są najechane, lub „bannerid” ustawiony w opakowującym elemencie div, gdy element iframe jest najechany. Wszystko, co musisz zrobić, to sprawdzić, czy 'overiFrame' jest ustawione, gdy okno się rozmywa, na przykład: ...
$(window).blur( function() {
if( overiFrame != -1 )
$.post('log.php', {id:overiFrame});
});
});
Bardzo eleganckie rozwiązanie z niewielką wadą: jeśli użytkownik naciśnie klawisz ALT-F4 podczas najeżdżania myszą na ramkę iFrame, zarejestruje to jako kliknięcie. Stało się to jednak tylko w FireFox, IE, Chrome i Safari go nie zarejestrowały.
Jeszcze raz dziękuję Mohammed, bardzo przydatne rozwiązanie!