Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以阻止使用Safari桌面浏览器的客户端?_Javascript_Safari - Fatal编程技术网

Javascript 是否可以阻止使用Safari桌面浏览器的客户端?

Javascript 是否可以阻止使用Safari桌面浏览器的客户端?,javascript,safari,Javascript,Safari,由于Safari的桌面版不支持,我想告诉使用Safari桌面版的客户端,他们应该切换到其他浏览器 我尝试了以下函数,但不幸的是,即使我使用Chrome,它也会返回Safari function getBrowser() { if((navigator.userAgent.indexOf("Opera") != -1 || navigator.userAgent.indexOf('OPR')) != -1 ) { return 'Opera'; }

由于Safari的桌面版不支持
,我想告诉使用Safari桌面版的客户端,他们应该切换到其他浏览器

我尝试了以下函数,但不幸的是,即使我使用Chrome,它也会返回
Safari

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上,
标记确实起作用。

在这种情况下,您不应该检查特定的浏览器类型。相反,您应该检查是否支持日期输入类型,如果不支持,则做出相应的反应

基本方法是,大多数浏览器将无法识别的输入类型转换为“文本”,因此您可以创建一个输入,将其类型设置为“日期”,然后查看是否已将其更改为“文本”:


尝试这样查找浏览器名称。有关更多信息,请参阅此

var objAgent=navigator.userAgent;
var objbrowserName=navigator.appName;
变量objOffsetName,objOffsetVersion;
//含铬
if((objOffsetVersion=objAgent.indexOf(“Chrome”)!=-1){
objbrowserName=“Chrome”;
}
//在Microsoft internet explorer中
else if((objOffsetVersion=objAgent.indexOf(“MSIE”)!=-1){
objbrowserName=“Microsoft Internet Explorer”;
}
//在Firefox中
else if((objOffsetVersion=objAgent.indexOf(“Firefox”)!=-1){
objbrowserName=“Firefox”;
}
//狩猎
else if((objOffsetVersion=objAgent.indexOf(“Safari”))!=-1){
objbrowserName=“Safari”;
}
//对于其他浏览器,“名称/版本”位于userAgent的末尾
如果((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)
如果可能的话,您应该检查支持哪些功能,而不是检查各个浏览器。似乎有一些黑客可以检查浏览器是否为日期输入提供了日期选择器:谢谢,我想这更像我需要的。一旦有可能,我会接受答案。
const testInput = document.createElement('input');
testInput.setAttribute('type', 'date');
if (testInput.type !== 'date') {
    // The date input type is not supported by this browser.
}