На основании ответа Мохаммеда Радвана я придумал следующее решение jQuery. В основном, что он делает, это отслеживать, что люди iFrame парят. Затем, если окно размывается, что, скорее всего, означает, что пользователь щелкнул баннер iframe.
iframe следует поместить в div с идентификатором, чтобы убедиться, что вы знаете, какой iframe пользователь нажал на:
<div class='banner' bannerid='yyy'>
<iframe src='http://somedomain.com/whatever.html'></iframe>
<div>
so:
$(document).ready( function() {
var overiFrame = -1;
$('iframe').hover( function() {
overiFrame = $(this).closest('.banner').attr('bannerid');
}, function() {
overiFrame = -1
});
... это удерживает overiFrame в -1, когда iFrames не зависает, или «баннид», установленный в оберточном 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 не зарегистрировали его.
Еще раз спасибо Мохаммеду, очень полезное решение!