iScroll需要知道包裝器和滾動器確切的尺寸,在iScroll初始化的時候進行計算,如果元素大小發(fā)生了變化,需要告訴iScroll DOM發(fā)生了變化。
下面將提供調(diào)用refresh方法的正確時機。
每次觸摸DOM,瀏覽器渲染器重繪頁面。一旦發(fā)生了重畫我們可以安全地讀新的DOM屬性。重新繪制階段不是瞬時發(fā)生的只是范圍結(jié)束時觸發(fā)。這就是為什么我們需要給渲染器刷新iScroll之前一點時間。
為了確保javascript得到更新后的屬性,應(yīng)該像下面的例子這樣使用刷新方法:
ajax('page.php', onCompletion);
function onCompletion () {
// Update here your DOM
setTimeout(function () {
myScroll.refresh();
}, 0);
};
這里調(diào)用refresh()使用了零秒等待,如果你需要立即刷新iScroll邊界就是如此使用。當然還有其他方法可以等待頁面重繪,但零超時方式相當穩(wěn)定。
如果你有一個相當復雜的HTML結(jié)構(gòu),你應(yīng)該給瀏覽器更多的執(zhí)行事件,可以設(shè)置100到200毫秒的超時時間。
這通常適用于所有任務(wù)必須在DOM上進行。通常給渲染器一些執(zhí)行的時間。