java - 将 JavaFX WebView 调整为文档正文所需的最小大小

标签 java javascript webview javafx

我正在为我的项目使用 JavaFX 编写自定义对话框。我需要一种变体但快速的模式来显示对话框内容。

我知道 controlsFX;实际上我正在使用它,但我想在 WebView 中显示内容,这样它会更易于控制。

问题是关于 WebView 的大小我想找到文档正文的高度并将 WebView 的大小设置为那个。

我尝试了以下 javascript hack,但在显示对话框之前,我得到的大小为 0,而在显示对话框之后,该值不可靠。有没有更好的解决方案,或者我应该忘记它并尝试嵌入支持 HTML 3 的 swing 组件?

    WebView vw = new WebView();
    vw.getEngine().loadContent("<p>This is my text</p><b>Another</b><p> This is a paragraph</p><ul><li>First cause</li><li>Second cause></li></ul>");
    vw.setPrefSize(500, 50);
    vw.setOnMouseClicked(new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent event) {
            // I see that executeScript doesn't work correctly even when the WebView is loaded
            Integer h = (Integer) vw.getEngine().executeScript("document.body.offsetHeight");
            System.out.println("scriptRES: " + h );
            vw.setPrefSize(400, h);
            vw.setMinSize(400, h);
            vw.setMaxSize(400, h);
        }
    });

最佳答案

JavaFX 问题跟踪器中的功能请求涵盖了 WebView 的自动调整大小支持:

功能请求当前尚未实现或计划实现。您可以对功能请求投票或发表评论。

据我所知没有解决方法。早期版本的 WebView 似乎可以使用以下代码 engine.executeScript("document.width")engine.executeScript("document.height")。但是这些命令在我上次尝试时不再有效。

关于java - 将 JavaFX WebView 调整为文档正文所需的最小大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25838965/

相关文章:

java - 重新创建数组后的 NPE

java - Java 请求确认的简短方法

javascript - 使用 ScrollTo 脚本滚动时,有没有办法防止页面闪烁/卡顿?

cocoa - 在 Mac OS X Lion 的 WebView 中禁用滚动动画?

JavaFX HTMLEditor - 焦点 webView (TextArea)

android - 是否有替代 NestedScrollView 用于 WebView 的方法?

java - 无法将列宽设置为零,即无法使列不可见

java - 遍历列表

javascript - 固定宽度跨度,无内联 block

javascript - firebase/我如何从 firestore/javascript 中的所有文档中获取字段