我有一个弹出窗口显示的WebView(确切地说是PopOver,但这无关紧要)。我试图调整WebView的大小以匹配HTML内容中一个div的高度。我有一个有效的解决方案,但有一个例外,第一次我在弹出窗口中显示WebView,高度不正确。所有后续尝试都将正确调整WebView的大小。
以下是我的相关代码:
ChangeListener listener = new ChangeListener() {
@Override
public void changed(ObservableValue observable, Object oldValue, Object newValue) {
if (newValue == Worker.State.SUCCEEDED) {
try {
Object result = webView.getEngine().executeScript("document.getElementById('txt').clientHeight");
if (result instanceof Integer) {
Integer i = (Integer) result;
double height = (double) i;
height = height + 20;
webView.setPrefHeight(height);
webView.getEngine().getLoadWorker().stateProperty().removeListener(this);
}
} catch (JSException ignored) {}
callback.invoke();
}
}
};
webView.getEngine().getLoadWorker().stateProperty().addListener(listener);
webView.getEngine().loadContent(some_content);
任何人都有想法为什么这个方法第一次显示WebView时会返回错误(在我的情况下太大)结果,以及如何规避它?