小编Sae*_*deh的帖子

在未显示正确的用户代理的情况下,如何在iOS 13的Safari中检测设备名称?

在实现Apple iOS 13之后,我意识到iPad iOS 13的Safari中的window.navigator.userAgent与MacOS相同。像这样:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15

如您所见,这是iPad的错误用户代理,甚至无法检测当前设备是否为iDevice。


经过初步研究,我找到了解决方法:

转到设置-> Safari->请求桌面网站->所有网站。您会注意到默认情况下启用了 “所有网站” 。如果禁用它并获取window.navigator.userAgent,则现在将显示正确的用户代理。

但我不能要求每个用户对每个设备进行此设置更改。因此,我试图找到另一种方法,最后编写了以下代码,检查它是否是Safari,macOS和触摸屏,然后该设备应该是苹果移动设备,但是我想知道是否有更好的建议/方法在Safari iOS 13中检测到正确的设备名称?

detectOs = function(){
   //returns OS name, like "mac"
};

//is Safari on an apple touch-screen device
isSafariInIdevice = function(){
   if (/Safari[\/\s](\d+\.\d+)/.test(windows.navigator.userAgent)) {
      return 'ontouchstart' in window && detectOs() === "mac";      
   }
   return false;
};
Run Code Online (Sandbox Code Playgroud)

javascript safari user-agent ios ios13

30
推荐指数
1
解决办法
5607
查看次数

标签 统计

ios ×1

ios13 ×1

javascript ×1

safari ×1

user-agent ×1