獲取 WebView 的頁面歷史記錄

WebHistory history = webView.getEngine().getHistory();

歷史基本上是條目列表。每個條目代表一個訪問過的頁面,它提供對相關頁面資訊的訪問,例如 URL,標題和上次訪問頁面的日期。

該列表可以使用 getEntries() 方法獲得。當 WebEngine 在網路上導航時,歷史記錄和相應的條目列表會發生變化。列表可能會根據瀏覽器操作進行擴充套件或縮小。列表公開的 ObservableList API 可以監聽這些更改。

與當前訪問的頁面相關聯的歷史條目的索引由 currentIndexProperty() 表示。當前索引可用於使用 go(int) 方法導航到歷史記錄中的任何條目。maxSizeProperty() 設定最大歷史記錄大小,即歷史記錄列表的大小

下面是如何獲取和處理 Web 歷史記錄項列表的示例。

ComboBox(comboBox)用於儲存歷史項。通過在 WebHistory 上使用 ListChangeListenerComboBox 將更新為當前的 WebHistory。在 ComboBox 上是一個 EventHandler,它重定向到所選頁面。

final WebHistory history = webEngine.getHistory();

comboBox.setItems(history.getEntries());
comboBox.setPrefWidth(60);
comboBox.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent ev) {
        int offset =
                comboBox.getSelectionModel().getSelectedIndex()
                - history.getCurrentIndex();
        history.go(offset);
    }
});

history.currentIndexProperty().addListener(new ChangeListener<Number>() {

    @Override
    public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
        // update currently selected combobox item
        comboBox.getSelectionModel().select(newValue.intValue());
    }
});

// set converter for value shown in the combobox:
//   display the urls
comboBox.setConverter(new StringConverter<WebHistory.Entry>() {

    @Override
    public String toString(WebHistory.Entry object) {
        return object == null ? null : object.getUrl();
    }

    @Override
    public WebHistory.Entry fromString(String string) {
        throw new UnsupportedOperationException();
    }
});