iPad продолжают тормозить и зависать в автономном режиме после продолжительного использования

У моих пользователей возникали проблемы с зависанием на их iPad, когда я запускал мой сайт в автономном режиме.

Используемые ими устройства работают под управлением iOS 9.2.1.

Отзывчивость устройства постепенно снижается, и через час использования она может даже зависнуть.

Нажатие кнопки "Домой" и повторное открытие веб-страницы в автономном режиме решит / сбросит проблему.

Веб-страницы, которые мои пользователи просматривают в автономном режиме, содержат несколько входов (текст, радио, флажок) и кнопку отправки. Таким образом, браузер несколько раз перезагружается перед зависанием.

Ресурсы страницы довольно малы, некоторые страницы могут содержать изображение или два, и файл шрифта импортируется в CSS для использования значков.

Кто-нибудь знает, что может быть причиной замерзания?

Я предполагаю, что это связано с памятью.

Могу ли я отслеживать использование памяти устройства iOS в автономном режиме?

Инструменты веб-инспектора для Safari ограничены по сравнению с Chrome, и Safari не поддерживает window.performance.memory,

Я также попытался выполнить удаленную отладку с помощью приложения "Инструменты", но в инструменте "Утечки" ничего не было записано, и я получил ошибку "Невозможно прикрепить к задаче; Порт недействителен.' при попытке использовать инструмент распределения.

Есть ли другой инструмент, который я должен использовать?

1 ответ

Похоже, это ошибка в автономном режиме для iOS 9.

Я отправил эту ошибку с яблоком и добавил ее, чтобы открыть радар http://openradar.appspot.com/25109349

Если вы запустите HTML-страницу ниже в автономном режиме на iOS 9, вы сможете воспроизвести проблему. После 100+ загрузок страницы вы заметите задержку сенсорного ответа, а после 400+ загрузок страницы экран будет полностью не отвечать.

Запуск фрагмента не будет работать в автономном режиме, поэтому вам придется скопировать html и создать свой собственный файл. Вам следует обновить действие формы, указав имя создаваемого вами файла или имя вашего файла "autoSubmitLoop.html".

<!DOCTYPE html>
<html>
    <head>
        <title>(Auto) iOS 9 standalone mode, page load, unresponsive touch bug</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="apple-mobile-web-app-status-bar-style" content="black" />
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="mobile-web-app-capable" content="yes" />
    </head>
    <body>
        <h1>Auto submit test</h1>
        <form method="get" action="autoSubmitLoop.html" id="form"  name="form">
            <p>Auto submit at 3s</p>
            <p>Timer: <span id="timer-counter">0</span></p>
            <input type="hidden" id="page" name="page" value="0" />
            <p>Auto submit count: <input type='number' id="page-counter" name="page-counter" value="0" disabled></p>
            <input type="submit" value="Submit" id="submit-button"/>
            <br>
            <br>
            <br>
            <button type="button" onclick="location.reload();">Reload</button>
            <br>
            <br>
        </form>
        <p>Scroll</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>&darr;</p>
        <script>
            (function() {
                var paramArray = window.location.search.substring(1).split("&");
                var time = 3;
                var counter = 0;

                for (var i = 0; i < paramArray.length; i = i + 1) {
                    var pair = paramArray[i].split("=");
                    if (pair[0] === "page") {
                        var nextPage = Number(pair[1]) + 1;
                        document.getElementById('page').value = nextPage;
                        document.getElementById('page-counter').value = nextPage;
                    }
                }

                setInterval(function(){
                    counter = counter + 1;
                    document.getElementById('timer-counter').innerHTML = counter;
                    if(counter >= time){
                        document.getElementById('submit-button').click();
                    }
                },1000);
            })();
        </script>
    </body>
</html>

Вот еще один пример без формы: если вы удалите скрипт в нижней части HTML и вручную отправите страницу, проблема все равно будет возникать.

<!DOCTYPE html>
<html>
    <head>
        <title>(Auto Reload) iOS 9 standalone mode, page load, unresponsive touch bug</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="apple-mobile-web-app-status-bar-style" content="black" />
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="mobile-web-app-capable" content="yes" />
    </head>
    <body>
        <h1>Auto reload test</h1>
        <p>Auto reload at 3s</p>
        <p>Timer: <span id="timer-counter">0</span></p>
        <br>
        <br>
        <button type="button" onclick="location.reload();">Reload</button>
        <br>
        <br>
        <p>Scroll</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>|</p>
        <p>&darr;</p>
        <script>
            (function() {
                var time = 3;
                var counter = 0;
                setInterval(function(){
                    counter = counter + 1;
                    document.getElementById('timer-counter').innerHTML = counter;
                    if(counter >= time){
                        location.reload();
                    }
                },1000);
            })();
        </script>
    </body>
</html>

Другие вопросы по тегам