Подтвердить что ты не робот

Обнаружение, если 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 по умолчанию.

4b9b3361

Ответ 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);