2017-06-02 65 views
0

所以我有一個iframe嵌入在一個簡單的秒錶運行的網站上。它只不過是一個遞歸超時。但是,在那裏進行的重複DOM更改會導致父網站的內容「閃爍」,並使內部iframe網站跳轉到頂部。由於直接跳轉到頁面頂部,這使得iframe內容不可能滾動。iframe中的超時會導致滾動問題

這個問題似乎只出現在移動瀏覽器(在iOS Safari 10.3.2中測試),而間隔的持續時間不相關(每秒只調用一次時出現同樣的問題)。

遞歸超時

$('#starttimer').on('click', function(e) { 
    loopTimer = function() { 
     setTimeout(function() { 
      $('#time').text('change'); /* DOM modifications seem to be the guilty part */ 
      loopTimer(); 
     }, 1); 
    } 
    loopTimer(); 
}); 

有沒有人遇到過類似的問題,或有沒有人知道如何解決這個問題?

回答

0

好的,正如我已經提到的,這似乎是重繪iframe內容的問題,它只出現在iOS Safari瀏覽器(和移動Chrome瀏覽器)中。

問題在於瀏覽器在以某種方式更改內容後有重新計算iframe的高度的問題。要解決這個bug,我所要做的就是

答:要麼在iframe的html和body上分配100%的高度,並使其能夠溢出。

html, 
body { 
    height: 100%; 
    overflow: auto; 
    -webkit-overflow-scrolling: touch; 
} 

B:或用JavaScript計算外iframe的高度和每當內部內容改變寫的IFRAME元素上的值作爲內聯式。

我希望這個幫助那些與這個iOS錯誤鬥爭的人。乾杯。