JSFiddle - React, Tailwind, and code Playground

JavaScript

var focused = true;

var pinger = function () {
    var timeEnd,
        timeElapsed,
        timeBegin = new Date();
    
    setTimeout(function () {
        timeEnd = new Date();
        timeElapsed = timeEnd - timeBegin;
        if (timeElapsed > 100) {
            console.log(timeElapsed);
            focused = false;
        } else {
            focused = true;
        }
        pinger();
    }, 50);
};

// pinger();


var focusedWindow = function (func) {
    var timeEnd,
        timeElapsed,
        timeBegin = new Date();
    
    console.log(func);
    
    setTimeout(function () {
        timeEnd = new Date();
        timeElapsed = timeEnd - timeBegin;
        
        console.log(timeElapsed);
        if (timeElapsed > 100) {
            console.log('horreur!');
            return false;
        } else {
            // console.log('success!');
            return func();
        }
    }, 50);
};

var i = 0;

setInterval(function () {
    focusedWindow(function () {
        console.log('this tab is active (' + i++ + ')');
    });
}, 1000);