Обнаружение, если iOS использует webapp
Мне было интересно, можно ли определить, использует ли пользователь iOS Webapp или просто обычным образом просматривает браузер Safari.
Причина, по которой я хочу достичь, заключается в том, что в iOS webapp, когда пользователь нажимает на ссылку, он будет перенаправлен в браузер Safari. Поэтому я использую следующее обходное решение, чтобы заставить его оставаться в webapp (запретить переход в браузер Safari).
$( document ).on("click",".nav ul li a",
function( event ){
// Stop the default behavior of the browser, which
// is to change the URL of the page.
event.preventDefault();
// Manually change the location of the page to stay in
// "Standalone" mode and change the URL at the same time.
location.href = $( event.target ).attr( "href" );
}
);
Но я хочу, чтобы это обходное решение выполнялось только тогда, когда пользователь использует webapp, я хочу, чтобы он был условным для пользователей webapp. Поэтому не в браузере Safari по умолчанию.
Ответы
Ответ 1
Вы должны обнаружить это, используя некоторый javascript:
<script>
if (
("standalone" in window.navigator) && // Check if "standalone" property exists
!window.navigator.standalone // Test if using standalone navigator
){
// .... code here ....
}
</script>
</head>
Как можно найти здесь: Определите, открыт ли сайт в качестве веб-приложения или через обычное сафари на ipad?
И источник, используемый в ответе, ЭТО.
Ответ 2
iOS и Chrome WebApp ведут себя по-разному, вот почему я пришел к следующему:
isInWebAppiOS = (window.navigator.standalone == true);
isInWebAppChrome = (window.matchMedia('(display-mode: standalone)').matches);