Cómo detectar si el usuario está usando el modo incognito con JavaScript en Google Chrome

Cómo detectar si el usuario está usando el modo incognito con JavaScript en Google Chrome

En algunos casos y dependiento del tipo de sitios web en los que trabajes ... si sabes a lo que me refiero ... vas a necesitar saber si el usuario está navegando en Google Chrome en modo incognito. Chrome al igual que otros exploradores guarda cookies, datos de sesión, historiales, información de formularios, claves e información temporal para su futuro uso. El modo incognito simplemente guarda este tipo de información en un lugar diferente y elimina dicha información cuando la ventana es cerrada. Esto quiere decir que la información que sea usada durante la sesión no podrá ser accedida luego de manera local, pero si de manera remota durante la sesión. Es decir, lo que pase por tu ISP (proveedor de servicios, buscadores) funciona de la misma manera que con una sesión normal.

Si deseas mostrar un tipo de mensaje al usuario por alguna razón cuando se use este modo, te compartiremos un pequeño bloque de código que te ayudará a conseguir esto con JavaScript.

1. Función para verificar modo

La función isIncognito hará el trabajo por ti. Esta función básicamente verifica si la API de FileSystem está disponible en el explorador o no, pues como quizás no sepas, durante el uso del explorador en modo incognito dicha API está desactivada por defecto por las razones mencionadas al inicio del articulo.

Asumiendo que el usuario está trabajando en Google Chrome o no (incluso si el usuario no está usando Chrome, esta función retornara un valor booleano falso siempre), la función retornara un valor booleano que confirma si estás usando dicho modo o no:

/**
 * Determina cuando el modo incognito de Google Chrome está activado o no.
 * 
 * @param callback Función anonima que se ejecuta cuando la disponibilidad de este modo ha sido verificada.
 */
function isIncognito(callback){
    var fs = window.RequestFileSystem || window.webkitRequestFileSystem;

    if (!fs) {
        callback(false);
    } else {
        fs(window.TEMPORARY,
            100,
            callback.bind(undefined, false),
            callback.bind(undefined, true)
        );
    }
}

2. Cómo usarlo

Para usar la función anterior, simplemente ejecutala pasando como primer argumento a esta una función que recibe a su vez una variable booleana como primer argumento. De acuerdo al estado de esa variable puedes determinar si se está navegando en modo incognito o no:

isIncognito(function(itIs){
    if(itIs){
        console.log("Estás en modo incognito !");
    }else{
        console.log("No estás en modo incognito :C");
    }
});

Que te diviertas !

Esto podría ser de tu interes

Conviertete en un programador más sociable