将WebView的大小调整为HTML内容高度

时间:2014-12-12 12:25:48

标签: java javafx

我有一个弹出窗口显示的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时会返回错误(在我的情况下太大)结果,以及如何规避它?

0 个答案:

没有答案