Обнаружение приватного просмотра для браузера UC - PullRequest
0 голосов
/ 25 сентября 2018

Я пишу функцию для определения браузера пользователя и является ли он приватным или нет.

Я могу обнаружить для всех браузеров, таких как Chrome, Mozilla, Safari, IE, Opera, но только для UC.браузер это проблема.Моя функция работает для всех браузеров, а также для UC на рабочем столе, но в случае мобильного телефона она не работает для UC Browser.

function isPrivateMode() {
    var currBrowser = '';
    var on = function on() {
        document.getElementById('browser').innerText = 'Your browser is '+ currBrowser;
        console.log('Your browser is ', currBrowser);

        document.getElementById('browserMode').innerText = 'You are using private browser';
        console.log('You are using private browser');
    }; // is in private mode
    var off = function off() {
        document.getElementById('browser').innerText = 'Your browser is '+ currBrowser;
        console.log('Your browser is ', currBrowser);

        document.getElementById('browserMode').innerText = 'You aren\'t using private browser';
        console.log('You aren\'t using private browser');
    }; // not private mode

    var testLocalStorage = function testLocalStorage() {
        try {
            if (localStorage.length) {
                off();
            } else {
                localStorage.x = 1;
                localStorage.removeItem('x');
                off();
            };
        } catch (e) {
            on();
        }
    };

    var is_chrome = navigator.userAgent.indexOf('Chrome') > -1;
    var is_explorer = window.MSPointerEvent ? true : false;
    var is_firefox = navigator.userAgent.indexOf('Firefox') > -1;
    var is_safari = navigator.userAgent.indexOf("Safari") > -1;
    var is_opera = navigator.userAgent.toLowerCase().indexOf("op") > -1;
    var is_uc = navigator.userAgent.toLowerCase().indexOf('ubrowser') > -1 || navigator.userAgent.toLowerCase().indexOf('ucbrowser') > -1;
    if ((is_chrome) && (is_safari)) { is_safari = false; }
    if ((is_chrome) && (is_opera)) { is_chrome = false; }
    if ((is_chrome) && (is_uc)) { is_chrome = false; }
    if ((is_opera) && (is_uc)) { is_opera = false; }

    // Chrome & Opera
    if (is_chrome || is_opera) {
        if(is_chrome){
            currBrowser = 'Chrome';
        }
        if(is_opera){
            currBrowser = 'Opera';
        }
        return void window.webkitRequestFileSystem(0, 0, off, on);
    }
    // UC Browser
    if(is_uc){
        currBrowser = 'UC';
        if (window.webkitRequestFileSystem) {
            window.webkitRequestFileSystem(
                window.TEMPORARY, 1,
                function() {
                    return off();
                },
                function(e) {
                    console.log(e);
                    return on();
                }
            );
        }
    }
    // Firefox
    if (is_firefox) {
        currBrowser = 'Firefox';
        var db = indexedDB.open('test');
        db.onerror = on;
        db.onsuccess = off;
        return void 0;
    }
    // Safari
    if(is_safari){
        currBrowser = 'Safari';
        var version = navigator.appVersion.split('Version/')[1].split(' ')[0].split('.')[0];
        if (version<11) { // ios <11
            return testLocalStorage();
        } else { // ios >11
            var isPrivate = false;
            try {
                window.openDatabase(null, null, null, null);
            } catch (_) {
                isPrivate = true;
            };
            if(isPrivate){
                return on()
            } else {
                return off()
            };
        };
    }
    // IE10+ & Edge
    if(is_explorer){
        currBrowser = 'Internet Explorer';
        if (!window.indexedDB) {
            return on();
        } else {
            return off();
        };
    }

    // others
    return off();
}

isPrivateMode();
<p id="browser"></p>
<p id="browserMode"></p>

Пожалуйста, помогите, если кто-нибудь может найти какое-либо решение для UC Mobile

Я проверил с помощью IndexedDB, Localstorage, Cookies, но все ониработа в мобильном приватном режиме браузера UC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...