gpt4 book ai didi

Java SWT 浏览器 : Waiting till dynamic page is fully loaded

转载 作者:行者123 更新时间:2023-11-29 09:10:31 25 4
gpt4 key购买 nike

我在使用 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 脚本。

提前致谢

最佳答案

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

onload 等待所有资源加载完毕,然后执行包含的代码,即启动警报。

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

关于Java SWT 浏览器 : Waiting till dynamic page is fully loaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com