jquery.iframetracker

jQuery Plugin to track click on iframes (like Google Adsense or Facebook Like button).

Usage no npm install needed!

<script type="module">
  import jqueryIframetracker from 'https://cdn.skypack.dev/jquery.iframetracker';
</script>

README

iframeTracker jQuery Plugin

iframeTracker is a jQuery plugin that allow to track clicks on iframes.

This is very useful to :

  • track clicks on Google Adsense (google uses iframes to display ads)
  • track clicks on Facebook Like buttons
  • track clicks on Youtube embed video player
  • ... and any other iframe !

Try it now : demo.

How does it work ?

Since it's impossible to read iframe content (DOM) from the parent page due to the same origin policy, tracking is based on the blur event associated to a page/iframe boundary monitoring system telling over which iframe is the mouse cursor at any time.

How to use ?

Match the iframe elements you want to track with a jQuery selector and call iframeTracker with a callback function that will be called when a click on the iframe is detected :

jQuery(document).ready(function($){
    $('.iframe_wrap iframe').iframeTracker({
        blurCallback: function(event) {
            // Do something when the iframe is clicked (like firing an XHR request)
        }
    });
});

You can also just pass a function, that will be then registered as the blurCallback :

jQuery(document).ready(function($){
    $('.iframe_wrap iframe').iframeTracker(function(event) {
        // Do something when the iframe is clicked (like firing an XHR request)
    });
});

Advanced tracking

jQuery(document).ready(function($){
    $('.iframe_wrap iframe').iframeTracker({
        blurCallback: function(event) {
            // Do something when iframe is clicked (like firing an XHR request)
            // You can know which iframe element is clicked via this._overId
        },
        overCallback: function(element, event) {
            this._overId = $(element).parents('.iframe_wrap').attr('id'); // Saving the iframe wrapper id
        },
        outCallback: function(element, event) {
            this._overId = null; // Reset hover iframe wrapper id
        },
        _overId: null
    });
});

Cancel tracking

You can remove a tracker attached to an iframe by calling .iframeTracker() with either false or null :

$('#iframe_red_1 iframe').iframeTracker(false);
$('#iframe_red_2 iframe').iframeTracker(null);

Full tutorial available here (it's in French).

Tested on jQuery 1.4.4 to 1.11.0, 2.1.4 & 3.2.1.


Install

With npm :

npm install jquery.iframetracker

With bower :

bower install jquery.iframetracker

About mobile devices

This plugin doesn't work on mobile devices such as smartphones and tablets, because this hardware uses a touchscreen instead of a mouse as click input. This design makes the boundary monitoring trick ineffective.

Donate

Donations are welcome :) via PayPal, Flattr or Bitcoin at this address : 3G5uTti2JPAT738uDeQXjrN7tUj2NZjt6M or by flashing this lovely QR code :

qrcode for bitcoin address 3G5uTti2JPAT738uDeQXjrN7tUj2NZjt6M