获取 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();
}
});