У нас есть курс SCORM, который мы создали в Articulate Storyline 360 (не беспокойтесь, если вы не знаете, что это такое). Курс обнаруживает различные сведения об устройстве, главным образом, используя navigator.userAgent
в качестве основного источника, и, как правило, это прекрасно.
Мы установили курс в LMS (Kallidus), но когда вы запускаете курс в браузере на рабочем столе (Edge или Chrome последние версии на Windows 10) он ошибочно определяет, что он работает на мобильном устройстве, и просит пользователя повернуть устройство!
Первоначальным предположением является код обнаружения устройства в Конечно, неправильно делает предположения на основе свойства navigator.userAgent
. Тем не менее, решающим моментом является то, что строка пользовательского агента, возвращаемая navigator.userAgent
внутри iframe, содержащего курс, была изменена по сравнению с обычным, и к нему был добавлен «AppleWebKit / Mobile /», что привело к неправильному суждению о том, что курс выполняется .
Итак, при нормальных обстоятельствах моя строка userAgent Windows 10 / Chrome выглядит следующим образом:
> navigator.userAgent
< "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36↵
(KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"
Однако в iframe, содержащем курс, тот же запрос показывает:
> navigator.userAgent
< "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36↵
(KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 AppleWebKit/ Mobile/"
поэтому неудивительно, что курс обманут, думая, что он работает на мобильном устройстве.
Аналогично для нового Edge:
> navigator.userAgent
< "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36↵
(KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 Edg/80.0.361.66"
vs
> navigator.userAgent
< "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36↵
(KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 Edg/80.0.361.66 AppleWebKit/ Mobile/"
Просто чтобы подчеркнуть, я выполняю эти запросы с помощью консоли DevTools, и единственное, что я изменяю между двумя запросами, это переключение между «верхним» фреймом и фреймом, содержащим Конечно.
Это не изолированный для одной машины Windows 10, но все, что мы проверили на нем (из разных организаций).
Так вы знаете, как это Можно ли изменить строку userAgent (кроме того, что пользователь делает это через настройки браузера)? Свойство navigator.userAgent
не имеет установщика, и вы, кажется, не можете добавить его для подмены / изменения свойства.
Я искал код javascript, но не вижу ничего, что мешает этому свойство.
Моя общая задача - остановить изменение строки userAgent, чтобы курс правильно определил, что это браузер для настольного компьютера, а не мобильное устройство, но для этого мне нужно отследить, как и где свойство изменяется.
Спасибо Bloodbaz