2016-03-09 16 views
1

我的用戶在獨立模式下運行我的網站時,他們的iPad出現凍結問題。繼續使用後,iPad的速度變慢並凍結在獨立模式

他們正在使用的設備正在運行iOS 9.2.1。

設備響應速度似乎逐漸變慢,使用一小時後它甚至可能會凍結。

單擊主頁按鈕並以獨立模式重新打開網頁將修復/重置問題。

我的用戶在獨立模式下查看的網頁包含少量輸入(文本,廣播,複選框)和提交按鈕。所以瀏覽器在凍結之前需要重新加載幾次。

該頁面的資源相當小,一些頁面可能包含一兩個圖像,並在css中導入字體文件以供圖標使用。

有誰知道什麼可能導致凍結?

我假設它與內存有關。

我能夠在獨立模式下跟蹤iOS設備的內存使用情況嗎?

與Chrome相比,Safari的網絡檢查器工具有限,Safari不支持window.performance.memory

我也嘗試過使用'Instruments'應用程序進行遠程調試,但是'Leaks'工具沒有記錄任何內容,我收到錯誤'Unable to attach to task;端口無效「。當試圖使用分配工具時。

我應該使用不同的工具嗎?

回答

1

看來這是爲iOS 9

在單機模式下的錯誤我提交了一份由蘋果這個bug,並添加它打開雷達http://openradar.appspot.com/25109349

如果您在iOS上的獨立模式下運行下面的html頁面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>