Можно ли заблокировать клиентов, использующих браузер Safari для настольных ПК? - PullRequest
0 голосов
/ 18 июня 2019

Поскольку настольная версия Safari не поддерживает <input type="date">, я хочу сказать клиентам, которые используют настольную версию Safari, что они должны переключиться на другой браузер.

Я пробовал следующую функцию, но, к сожалению, она возвращает Safari, даже если я использую Chrome.

function getBrowser() { 
    if((navigator.userAgent.indexOf("Opera") != -1 || navigator.userAgent.indexOf('OPR')) != -1 ) 
    {
        return 'Opera';
    }
    else if(navigator.userAgent.indexOf("Edge") != -1 )
    {
        return 'Edge';
    }
    else if(navigator.userAgent.indexOf("Samsung") != -1) {
        return 'Samsung Browser';
    }
    else if(navigator.userAgent.indexOf("Safari") != -1)
    {
        return 'Safari';
    }
    else if (navigator.userAgent.indexOf("Chrome") != -1) {
        return 'Chrome';
    }
    else if(navigator.userAgent.indexOf("Firefox") != -1 ) 
    {
        return 'Firefox';
    }
    else if(navigator.userAgent.indexOf("MSIE") != -1 )
    {
        return 'IE';
    }  
    else 
    {
        return 'unknown';
    }
}

Есть ли другой способ, как я могу определить, использует ли клиент Safari? И если есть, возможно ли обнаружить пользователя, использующего его настольную версию? Потому что на iPhone и iPad теги <input type="date"> работают.

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Попробуйте вот так, чтобы найти имя браузера.за дополнительной информацией обращайтесь по этому коду

var objAgent = navigator.userAgent;
var objbrowserName  = navigator.appName;
var objOffsetName,objOffsetVersion;

// In Chrome 
if ((objOffsetVersion=objAgent.indexOf("Chrome"))!=-1) {
 objbrowserName = "Chrome";
}
// In Microsoft internet explorer
else if ((objOffsetVersion=objAgent.indexOf("MSIE"))!=-1) {
 objbrowserName = "Microsoft Internet Explorer";
}

// In Firefox
else if ((objOffsetVersion=objAgent.indexOf("Firefox"))!=-1) {
 objbrowserName = "Firefox";
}
// In Safari 
else if ((objOffsetVersion=objAgent.indexOf("Safari"))!=-1) {
 objbrowserName = "Safari";
}
// For other browser "name/version" is at the end of userAgent 
else if ( (objOffsetName=objAgent.lastIndexOf(' ')+1) < 
          (objOffsetVersion=objAgent.lastIndexOf('/')) ) 
{
 objbrowserName = objAgent.substring(objOffsetName,objOffsetVersion);
 if (objbrowserName.toLowerCase()==objbrowserName.toUpperCase()) {
  objbrowserName = navigator.appName;
 }
}

document.write('Browser name  = '+objbrowserName)
0 голосов
/ 18 июня 2019

Вы не должны проверять определенные типы браузеров в этом случае.Вместо этого вам следует проверить, поддерживается ли тип ввода даты, а затем отреагировать соответствующим образом, если нет.https://diveinto.html5doctor.com/detect.html#input-types

Основной подход заключается в том, что нераспознанные типы ввода в большинстве браузеров преобразуются в «текст», поэтому вы можете создать вход, установить его тип на «дату», а затем посмотреть, был ли он изменен на«текст»:

const testInput = document.createElement('input');
testInput.setAttribute('type', 'date');
if (testInput.type !== 'date') {
    // The date input type is not supported by this browser.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...