จากคำตอบของโมฮัมเหม็ดราวันวานฉันได้คำตอบ jQuery ต่อไปนี้ขึ้นมา โดยพื้นฐานแล้วสิ่งที่มันทำคือการติดตามสิ่งที่คน iFrame กำลังโฉบ ถ้าหน้าต่างนั้นพร่ามัวซึ่งหมายความว่าผู้ใช้คลิกที่แบนเนอร์ iframe
iframe ควรใส่ div ที่มี id เพื่อให้แน่ใจว่าคุณทราบ 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 ไม่ได้ลงทะเบียน
ขอบคุณอีกครั้งโมฮัมเหม็ดทางออกที่มีประโยชน์มาก!