我在一个项目中使用 JxBrowser。我只使用本地 HTML 文件,因此使用以下方法呈现我的 HTML 文件:
public static void loadHTMLFile(Browser browser, String filename){
String current = PathUtils.getCurrentDir();
browser.loadURL("file:///" + current + "/some/path/in/my/project/resources/web/" + filename);
}
在某些情况下,我必须使用invokeAndWaitFinishLoadingMainFrame -方法,因为我必须初始化必须首先完全加载的按钮。
来自官方 JxBrowser 网站 ( https://jxbrowser.support.teamdev.com/support/solutions/articles/9000013107-loading-waiting ) 的示例如下所示:
// Blocks current thread execution and waits until http://www.google.com web page is loaded completely
Browser.invokeAndWaitFinishLoadingMainFrame(browser, new Callback<Browser>() {
@Override
public void invoke(Browser value) {
value.loadURL("http://www.google.com");
}
});
就我而言,它看起来像这样:
public static void loadHTMLFileComplete(Browser browser, String filename){
Browser.invokeAndWaitFinishLoadingMainFrame(browser, new Callback<Browser>() {
@Override
public void invoke(Browser value) {
loadHTMLFile(value, filename);
}
});
}
到目前为止,我想没有什么令人惊讶的......
现在是棘手的部分:
invokeAndWaitFinishLoadingMainFrame方法是问题所在:
使用invokeAndWaitFinishLoadingMainFrame -方法正确加载了第一个视图(登录视图)
之后,当再次 使用invokeAndWaitFinishLoadingMainFrame -方法时,我的程序超时(下面的完整异常)
例如,当我单击登录按钮并希望被转发到主视图时
有一个小技巧,我偶然发现让它暂时工作(现在它变得令人毛骨悚然):
当我在谷歌之间加载在线网页时,超时问题消失了
也可以使用invokeAndWaitFinishLoadingMainFrame -方法
我就是这样做的
public static void loadGoogle(Browser browser){
Browser.invokeAndWaitFinishLoadingMainFrame(browser, new Callback<Browser>() {
@Override
public void invoke(Browser value) {
value.loadURL("http://www.google.com");
}
});
}
这里出现了我之前提到的 timeoutException:
-- Product name: JxBrowser
-- Licensed version: 6.x
-- Licensed to:
-- License type: Evaluation
-- Generation date: 21.04.2019
-- Expiration date: 21.05.2019
-- License info: Single-user license
-- Current date: 30.04.2019
JxBrowser license valid.
翻过高山走不出你
相关分类