2010-11-03 115 views
0

我有一個將新的XHTML添加到已有頁面(DOM樹)的JavaScript代碼。 我的頁面元素是動態的,所以添加新元素會導致其他元素大小發生變化。我有一個自定義滾動條的實現取決於這些大小,每次更改時都需要重置。檢測瀏覽器DOM更改完成

我在插入新XHTML的語句後不久調用了重置方法。但看起來這太快了。有時滾動條不能正確調整。如果我在重置之前添加一些延遲,那麼可以,但我認爲這太粗糙和不可靠的解決方案。

我需要:給定的DOM元素完成尺寸的變化時

檢測

當整個DOM變化與重新佈局沿着完成檢測。

到目前爲止我找不到任何東西。我知道大多數人的情況太複雜,但我希望有人能夠提供幫助。謝謝!

回答

2

如何檢查dom狀態的某些輪詢?這與jQuery有關,只要頁面主體中的html以最大半秒的延遲更新,就會調用resetMyScrollbar

var lastDom = ""; 
function checkDomHash() { 
    var newDom = $("body").html(); 
    if (newDom != lastDom) { 
    resetMyScrollbar(); 
    } 
    window.setTimeout(checkDomHash, 500); 
} 

在現實生活中,我會使用散列函數和比較散列作爲比較巨大的字符串是浪費。

var lastDomHash = ""; 
... 
    var newDomHash = md5OrWhatever($("body").html()); 
    ... 

編輯

或者你也可以檢查任何高度的滾動條是。

var lastHeight = 0; 
... 
    var newHeight = $("#my_element_id").outerHeight(); 
    ... 
+0

我想用這種方式我只會比較DOM內容,並知道它何時發生變化,並且是在重新佈局完成之前。我已經嘗試了DOMNodeInserted,它服務於相同的目的,但它並沒有幫助:( – 2010-11-03 19:03:52

+0

但您有一些觀點,我認爲在目標滾動元素高度實際發生變化時會進行一些檢測,因爲這是我的興趣所在。 – 2010-11-03 19:04:58

+0

是的,您點擊最後一次編輯。 – 2010-11-03 19:06:36