javascript - 是否可以阻止使用 Safari 桌面浏览器的客户端?
问题描述
因为桌面版 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">
标签确实有效。
解决方案
尝试这样查找浏览器名称。有关更多信息,请参阅此代码
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)
推荐阅读
- python - 如何让这个贪心函数更快?
- http-status-code-403 - 禁止:来自 GCP 云的 403 访问被拒绝错误
- express - 护照 saml 如何将配置文件数据传递给路由
- rest - 在 Jmeter 中设置每分钟限制 100 个请求不起作用
- reactjs - 如何使用材质 UI 在 React 中添加 classList
- c# - c#和HtmlAgilityPack:获取href属性的值
- wordpress - 如何使用 Yoast 插件为 front-page.php 做 SEO
- git - 使用 git lfs 和配置 SSH 密钥
- python - 条纹是否发送消息以确认付款?
- jenkins - 如何使用 Jenkins 多配置进行微服务构建过程?