Я пишу функцию для определения браузера пользователя и является ли он приватным или нет.
Я могу обнаружить для всех браузеров, таких как 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.