Основываясь на ответе Мохаммеда Радвана, я нашел следующее решение jQuery. По сути, он отслеживает то, что парят люди в iFrame. Затем, если окно размывается, это, скорее всего, означает, что пользователь нажал на баннер iframe.
iframe должен быть помещен в div с идентификатором, чтобы убедиться, что вы знаете, на какой iframe пользователь нажал:
<div class='banner' bannerid='yyy'>
<iframe src='http://somedomain.com/whatever.html'></iframe>
<div>
так:
$(document).ready( function() {
var overiFrame = -1;
$('iframe').hover( function() {
overiFrame = $(this).closest('.banner').attr('bannerid');
}, function() {
overiFrame = -1
});
...
это сохраняет overiFrame в -1, когда iFrames не наведены, или «bannerid», установленный в div обтекания при наведении iframe. Все, что вам нужно сделать, это проверить, установлен ли «overiFrame», когда окно размывается, вот так:
...
$(window).blur( function() {
if( overiFrame != -1 )
$.post('log.php', {id:overiFrame}); /* example, do your stats here */
});
});
Очень элегантное решение с небольшим недостатком: если пользователь нажимает ALT-F4 при наведении курсора мыши на iFrame, он регистрирует его как щелчок. Это произошло только в FireFox, хотя IE, Chrome и Safari не зарегистрировали его.
Еще раз спасибо, Мухаммед, очень полезное решение!