獲取 WebView 的頁面歷史記錄
WebHistory history = webView.getEngine().getHistory();
歷史基本上是條目列表。每個條目代表一個訪問過的頁面,它提供對相關頁面資訊的訪問,例如 URL,標題和上次訪問頁面的日期。
該列表可以使用 getEntries()
方法獲得。當 WebEngine
在網路上導航時,歷史記錄和相應的條目列表會發生變化。列表可能會根據瀏覽器操作進行擴充套件或縮小。列表公開的 ObservableList API 可以監聽這些更改。
與當前訪問的頁面相關聯的歷史條目的索引由 currentIndexProperty()
表示。當前索引可用於使用 go(int)
方法導航到歷史記錄中的任何條目。maxSizeProperty()
設定最大歷史記錄大小,即歷史記錄列表的大小
下面是如何獲取和處理 Web 歷史記錄項列表的示例。
ComboBox
(comboBox)用於儲存歷史項。通過在 WebHistory
上使用 ListChangeListener
,ComboBox
將更新為當前的 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();
}
});