Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

231
Vistas
JavaScript Title-Animation for inactive Tab

I found a script here to query the browser tab activity and wanted to combine that with a function that plays a small title animation when inactive.

Apart from the fact that i can still optimize the performance somewho, one error symbols are displayed on each side when the train has passed through once.

At first I thought it was the emoji (two combined emoji), but it happens to others too. Anyone have an idea?

var vis = (function () {
    var stateKey, eventKey, keys = {
        hidden: "visibilitychange",
        webkitHidden: "webkitvisibilitychange",
        mozHidden: "mozvisibilitychange",
        msHidden: "msvisibilitychange"
    };
    for (stateKey in keys) {
        if (stateKey in document) {
            eventKey = keys[stateKey];
            break;
        }
    }
    return function (c) {
        if (c) {
            document.addEventListener(eventKey, c);
            //document.addEventListener("blur", c);
            //document.addEventListener("focus", c);
        }
        return !document[stateKey];
    };
})();

var storeTitle = document.title,
    myAnimation;

function getLokTitle() {

    let title = "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 🚂 ",
        //let title = "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 🚄 ",
        i = 0;

    myAnimation = setTimeout(function () {
        setInterval(function () {
            document.title = title.substr(i, title.length) + title.substr(0, i);
            i = (i + 1) % title.length;

            if (vis() === true) {
                clearTimeout(myAnimation);
                document.title = storeTitle;
                return storeTitle;
            }
        }, 250);
    }, 1000);

    return title;
}

function getStoreTitle() {

    if (typeof myAnimation !== "undefined") {
        clearTimeout(myAnimation);
    }
    return storeTitle;
}

vis(function () {
    document.title = vis() ? getStoreTitle() : getLokTitle();
    //console.log(new Date, 'visible ?', vis());
});

// to set the initial state
document.title = vis() ? getStoreTitle() : getLokTitle();
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Thanks to Niet the Dark Absol,

here is the final code:

// Source: https://stackoverflow.com/questions/19519535/detect-if-browser-tab-is-active-or-user-has-switched-away/19519701#19519701
//  var visible = vis();
//  vis(function(){});
var vis = (function () {
    var stateKey, eventKey, keys = {
        hidden: "visibilitychange",
        webkitHidden: "webkitvisibilitychange",
        mozHidden: "mozvisibilitychange",
        msHidden: "msvisibilitychange"
    };
    for (stateKey in keys) {
        if (stateKey in document) {
            eventKey = keys[stateKey];
            break;
        }
    }
    return function (c) {
        if (c) {
            document.addEventListener(eventKey, c);
            //document.addEventListener("blur", c);
            //document.addEventListener("focus", c);
        }
        return !document[stateKey];
    };
})();

var storeTitle = document.title,
    myAnimation;

function getLokTitle() {

    var title = "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 🚂 ",
        //let title = "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 🚄 ",
        i = 0;

    document.title = title;

    myAnimation = setTimeout(function () {
        let title = Array.from("_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 🚂 ");
        setInterval(function () {
            //document.title = title.substr(i, title.length) + title.substr(0, i);
            document.title = title.slice(i).concat(title.slice(0, i)).join("");
            i = (i + 1) % title.length;

            if (vis() === true) {
                clearTimeout(myAnimation);
                document.title = storeTitle;
                return storeTitle;
            }
        }, 250);
    }, 1000);

    return title;
}

function getStoreTitle() {

    if (typeof myAnimation !== "undefined") {
        clearTimeout(myAnimation);
    }
    return storeTitle;
}

vis(function () {
    document.title = vis() ? getStoreTitle() : getLokTitle();
    //console.log(new Date, 'visible ?', vis());
});

// to set the initial state
document.title = vis() ? getStoreTitle() : getLokTitle();
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda