2013-04-01 37 views
4

如何在JavaFx中獲取webview控件的文檔高度?JavaFX webview,獲取文檔高度

+0

Java和JavaScript有很大的不同。另外,請擴展您的問題,或許您已經嘗試過。 –

+0

我有一個webview控件,我想設置它的高度相對於文檔高度。 –

+0

請點擊編輯更新您的問題。您的評論僅僅重新排列了原始問題中的單詞! –

回答

5

你可以使用下面的調用在WebView中顯示的文檔的高度:

webView.getEngine().executeScript(
    "window.getComputedStyle(document.body, null).getPropertyValue('height')" 
); 

一個完整的應用程序來演示調用用法:

import javafx.application.Application; 
import javafx.beans.value.*; 
import javafx.scene.Scene; 
import javafx.scene.web.*; 
import javafx.stage.Stage; 
import org.w3c.dom.Document; 

public class WebViewHeight extends Application { 
    @Override public void start(Stage primaryStage) { 
    final WebView webView = new WebView(); 
    final WebEngine engine = webView.getEngine(); 
    engine.load("http://docs.oracle.com/javafx/2/get_started/animation.htm"); 
    engine.documentProperty().addListener(new ChangeListener<Document>() { 
     @Override public void changed(ObservableValue<? extends Document> prop, Document oldDoc, Document newDoc) { 
     String heightText = webView.getEngine().executeScript(
      "window.getComputedStyle(document.body, null).getPropertyValue('height')" 
     ).toString(); 
     double height = Double.valueOf(heightText.replace("px", ""));  

     System.out.println(height); 
     } 
    }); 
    primaryStage.setScene(new Scene(webView)); 
    primaryStage.show(); 
    } 

    public static void main(String[] args) { launch(args); } 
} 

以上答案的來源:Oracle JavaFX forums WebView configuration thread。對於相關功能的基於Java API


相關問題跟蹤請求:

RT-25005 Automatic preferred sizing of WebView

+0

它的工作原理,但結果是不正確的。我通過像素線測量,高度約爲480px,代碼返回414px。 – 2015-06-05 05:54:25

+0

謝謝你的澤。這有點遲了。你的例子正在運行。不過,我有一個嵌入在「TableCell」中的webview。這裏的結果總是0像素(關閉:https://stackoverflow.com/questions/22334983/java-fx-tableview-display-simple-html/22335276#22335276)任何想法如何解決這個問題? – BerndGit

+0

請參閱:https://stackoverflow.com/questions/42856471/workaround-for-rt-25005-automatic-preferred-sizing-of-webview以獲取更具體的問題,包括運行示例。 – BerndGit

0

這是你在找什麼:

Double.parseDouble(webView.getEngine().executeScript("document.height").toString())