Dựa trên câu trả lời của Mohammed Radwan, tôi đã đưa ra giải pháp jQuery sau đây. Về cơ bản những gì nó làm là theo dõi những gì mọi người iFrame đang di chuột. Sau đó, nếu cửa sổ làm mờ điều đó rất có thể có nghĩa là người dùng đã nhấp vào biểu ngữ iframe.
iframe nên được đặt trong div với id, để đảm bảo bạn biết iframe nào mà người dùng đã nhấp vào:
<div class='banner' bannerid='yyy'>
<iframe src='http://somedomain.com/whatever.html'></iframe>
<div>
vì thế:
$(document).ready( function() {
var overiFrame = -1;
$('iframe').hover( function() {
overiFrame = $(this).closest('.banner').attr('bannerid');
}, function() {
overiFrame = -1
});
... điều này giữ cho overiFrame ở -1 khi không có iFrames nào được di chuột hoặc 'bannerid' được đặt trong div gói khi một iframe được di chuột. Tất cả những gì bạn phải làm là kiểm tra xem 'overiFrame' có được đặt khi cửa sổ mờ không, như vậy: ...
$(window).blur( function() {
if( overiFrame != -1 )
$.post('log.php', {id:overiFrame}); /* example, do your stats here */
});
});
Giải pháp rất thanh lịch với một nhược điểm nhỏ: nếu người dùng nhấn ALT-F4 khi di chuột qua iFrame, nó sẽ ghi nhật ký dưới dạng nhấp chuột. Điều này chỉ xảy ra trong FireFox, IE, Chrome và Safari đã không đăng ký nó.
Cảm ơn một lần nữa Mohammed, giải pháp rất hữu ích!