После того, как Apple выпустила iOS 13, я понял, что window.navigator.userAgent в Safari на iPad iOS 13 такая же, как на 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 и сенсорным экраном, тогда устройство должно быть мобильным устройством Apple , но мне интересно, есть лиЛюбое лучшее предложение / способ определения правильного имени устройства в 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;
};