代码之家  ›  专栏  ›  技术社区  ›  hrishi

从chrome扩展访问动态更新的DOM

  •  0
  • hrishi  · 技术社区  · 5 年前

    我正在使用Chrome扩展从一个站点抓取数据。网站上有一个“加载更多”div,点击后加载接下来的30条记录。我使用下面的代码单击并加载数据:

    setTimeout(function(){
      var activityTab = document.getElementsByClassName("loadMore")[0];
      activityTab.click();
    }, 5000);
    

    它加载接下来的30条记录并生成一个新的“load more”div,但是我不能点击这个新的动态加载的“load more”div。我如何在JavaScript的原始站点中访问动态生成的HTML?我只能在页面加载时访问原始站点的DOM中可用的数据。

    0 回复  |  直到 5 年前
        1
  •  5
  •   Lajos Arpad    5 年前

    天真地说,这是一种实现你想要的方式:

    function doSomething(startIndex, items) {
        for (let i = startIndex; i < items.length; i++) {
            //Crawl the data
        }
    }
    
    var selector = ".myfancystuff"; //This is just test data, change this selector to one which is more appropriate to your case
    var items = document.querySelectorAll(selector);
    var activityTab = document.getElementsByClassName("loadMore")[0];
    activityTab.click();
    setTimeout(function() {
        var newItems = document.querySelectorAll(selector);
        if (newItems.length > items.length) {
            doSomething(items.length, items = newItems);
            activityTab.click();
        }
    }, 1000);