Основываясь на ответе Мохаммеда Радвана, я придумал следующее решение 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 не зарегистрировали это.
Еще раз спасибо Мохаммед, очень полезное решение!