Detecting ad-blocking users

This code lets you detect with a high degree of reliability if a user is blocking NitroPay’s ad script.

Embed the following script anywhere on your page

<script type="text/javascript">
var npDetect = new (function () {
    this.blocking = false;
    var errcnt = 0;
    function testImg() {
        var i = new Image();
        i.onerror = () => {
            errcnt++;
            if (errcnt < 3) {
                setTimeout(testImg, 250);
            } else {
                npDetect.blocking = true;

                if (document.dispatchEvent && window.CustomEvent) {
                    document.dispatchEvent(
                        new CustomEvent('np.blocking', {
                            detail: {
                                blocking: npDetect.blocking,
                            },
                        })
                    );
                }
            }
        };
        i.onload = () => {
            npDetect.blocking = false;
        };

        i.src = 'https://s.nitropay.com/1.gif?' + Math.random() + '&adslot=';
    }
    testImg();
})();
</script>

Embed this script to listen for the np.blocking event. You should perform whatever task is necessary such as re-adjusting your layout or displaying an appeal to the user if this event is fired.

<script type="text/javascript">
document.addEventListener('np.blocking', (e) => {
    if (e.detail.blocking) {
        // the user is blocking the nitropay script
    }
});
</script>