Java的SWT浏览:等到动态页面完全加载(Java SWT browser: Waiting ti

2019-09-23 13:28发布

我用SWT浏览器类的工作,我有一个问题。 我试图从其中大部分数据是动态加载与使用ASP的页面复制页面的源代码。 问题是,完成浏览器事件侦听器的情况下,当然是发射的显示整个网页内容之前。 这里是我的代码的一部分:

class GermaniaProgressListener implements ProgressListener {

  final Browser browser;
  Calendar calen;
  SimpleDateFormat dateFormat;
  static Integer counter;
  static Integer changeCounter;
  static Integer completeCounter;


  public GermaniaProgressListener(Browser browser, Calendar calen, SimpleDateFormat dateForm) {
    super();
    this.browser = browser;
    this.calen = calen;
    this.dateFormat = dateForm;
    counter = 1;
  }

  public void changed(ProgressEvent event) {

  }

  @Override
  public void completed(ProgressEvent arg0) {
    String pageContent = "";
    if(counter > 1) {
      try {
        pageContent = (String)browser.evaluate("return document.body.innerHTML");
        FileUtilities.writeFile(
            FilePaths.GERMANIA_HTML.getFilePath().replace(".", ((Integer)(counter-1)).toString() + "."),
            pageContent);
      } catch (IOException e) {
        e.printStackTrace();
        LoggingUtilities.logException(e);
        BrowserUtilities.closeBrowser(browser);
      }
    }
    if(counter < 8) {
      String strDate = dateFormat.format(calen.getTime());
      Boolean ret = browser.execute("this.controler.loadPage(0, '', 'd=" + strDate + "')");
      if(!ret) {
        LoggingUtilities.logString("Error getting germania pages");
        BrowserUtilities.closeBrowser(browser);
        return;
      }
      calen.add(Calendar.DATE, 1);
      counter++;
    } else {
      BrowserUtilities.closeBrowser(browser);
    }
  }
};

public class PageDowGermania {
  static public void getPageContent() {
    final Browser browser = BrowserUtilities.createBrowser();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
    Calendar calen = Calendar.getInstance();
    calen.setTime(new Date());
    GermaniaProgressListener fpl = new GermaniaProgressListener(browser, calen, dateFormat);
    browser.addProgressListener(fpl);
    BrowserUtilities.startBrowser(browser, "http://www.germaniasport.hr");    
  }
}

我不是在动态网页的专家,所以,也许有人可以帮助我,如果有任何可能性,例如在JavaScript脚本,可以检查它的页面完全加载。

提前致谢

Answer 1:

window.onload = function () {
    alert("Everything loaded")
}

onload等待,直到所有的资源被加载并执行该所包含的代码,即启动警报。

但是请注意, onload可能不会在某些情况下工作。 如果我没有记错,有时不的你工作使用浏览器的前进和后退按钮。



文章来源: Java SWT browser: Waiting till dynamic page is fully loaded