Mohammed Radwan'ın cevabına dayanarak aşağıdaki jQuery çözümünü buldum. Temel olarak yaptığı şey, iFrame çalışanlarının neler yaptığını takip etmektir. Ardından, pencere bulanıklaşırsa bu, büyük olasılıkla kullanıcının iframe başlığını tıkladığı anlamına gelir.
iframe, kullanıcının hangi iframe'i tıkladığını bildiğinizden emin olmak için kimliğine sahip bir div içine yerleştirilmelidir:
<div class='banner' bannerid='yyy'>
<iframe src='http://somedomain.com/whatever.html'></iframe>
<div>
yani:
$(document).ready( function() {
var overiFrame = -1;
$('iframe').hover( function() {
overiFrame = $(this).closest('.banner').attr('bannerid');
}, function() {
overiFrame = -1
});
... bu, hiçbir iFrame üzerine gelmediğinde overiFrame'i -1'de tutar veya bir iframe üzerine gelindiğinde sarmalayıcı div'de 'bannerid' ayarını tutar. Tek yapmanız gereken, pencere bulanıklaştığında 'overiFrame'in ayarlanıp ayarlanmadığını kontrol etmektir, örneğin: ...
$(window).blur( function() {
if( overiFrame != -1 )
$.post('log.php', {id:overiFrame}); /* example, do your stats here */
});
});
Küçük bir dezavantajı olan çok şık bir çözüm: Bir kullanıcı fareyi bir iFrame'in üzerine getirirken ALT-F4'e basarsa, bunu bir tıklama olarak kaydeder. Bu yalnızca FireFox'ta oldu, ancak IE, Chrome ve Safari kaydetmedi.
Tekrar teşekkürler Mohammed, çok faydalı bir çözüm!