2012-06-18 78 views
0

看看this site。當您向下滾動時,它會自動加載更多頁面。假設我有一個在document.load上運行的事件。當您向下滾動並查看更多內容時,是否有辦法讓它再次執行此操作?Javascript:如何檢查是否有東西被添加到DOM?

值得一提的是,我試圖設計一種方式來捕捉所有這樣的實例,而不僅僅是我提到的特定網站,當它進行無限滾動時,它可能會鎖定某些東西。

+2

調查「滾動」事件的性質。 – Pointy

+2

通常,您(或您的腳本)是向DOM添加元素的人,因此您可以在添加元素時調用您的函數,而不是添加另一個事件來捕獲這些元素。 – GolezTrol

+0

所以你正在尋找一種事件來偵聽DOM添加到什麼時候? –

回答

1

不建議使用DOM3 Mutation Events,如DOMSubtreeModified,只要發生特定突變事件就會觸發。出於性能和兼容性的原因,MDN強烈反對使用它們,但它們確實存在。我也相信他們不會提供有關突變發生的種類或任何種類的比較之前/之後的信息。

有一個W3C草案DOM4 Mutation Observers,它可能在當前的某些瀏覽器中實現。我知道它至少在Chrome,它採用WebKitMutationObserver像這樣實現的:

var observer = new WebKitMutationObserver(function(mutations, observer) { 
    // fired when a mutation occurs 
    console.log(mutations, observer); 
    // ... 
}); 

// define what element should be observed 
// and what types of mutations trigger the callback 
observer.observe(document, { 
    subtree: true, 
    attributes: true 
    //... 
}); 

還有的mutation properties選秀(向下滾動到綠盒)的完整列表。

0

您描述的行爲通常被稱爲「infinite scrolling」。

編輯:我上面的答案並沒有真正回答你的問題。

最接近我能想到的處理這種真正通用的方法,即使它不是您的代碼將元素添加到DOM,是使用DOM Level 3 API Mutation events,但它們是現已棄用,不應使用。

DOM Level 4中的mutation observers提案正在進行中,但尚未標準化。然而,take a look at this article爲一個示例實現。

+0

歡呼爲downvote!說明? –

+1

我不能說當然有威望的downvoter,但可能的原因包括你剛纔發佈了一個沒有詳細說明的鏈接(代碼示例等),並且該鏈接涉及一個jQuery插件,但問題沒有標記爲jQuery。 – Pointy

+0

是的,其實我認爲這個問題更多的是關於如何在DOM修改上執行任意代碼,而不是如何實現滾動效果本身,所以我錯了任何方式。 :) –

相關問題