【发布时间】:2012-03-30 00:01:16
【问题描述】:
当使用 JavaFX 2.0 的 WebEngine 和 WebView 显示一些 HTML 内容时,我根本无法处理来自 HTML 页面的下载。当我点击任何可下载的链接时,什么都没有发生。
是否可以在 JavaFX 2.0 WebView/WebEngine 中处理下载?
【问题讨论】:
当使用 JavaFX 2.0 的 WebEngine 和 WebView 显示一些 HTML 内容时,我根本无法处理来自 HTML 页面的下载。当我点击任何可下载的链接时,什么都没有发生。
是否可以在 JavaFX 2.0 WebView/WebEngine 中处理下载?
【问题讨论】:
下载功能目前未在 WebView 中实现。 您可以通过监控 WebView 的 location 属性,然后创建适当的代码来执行下载来自己实现它。
webView.getEngine().locationProperty().addListener(new ChangeListener<String>() {
@Override public void changed(ObservableValue<? extends String> observableValue, String oldLoc, String newLoc) {
// check if the newLoc corresponds to a file you want to be downloadable
// and if so trigger some code and dialogs to handle the download.
}
});
可以在zenjava blog entry 中找到处理从 JavaFX 下载的代码示例。编辑:此博客页面不再存在。这是此博客页面的latest archive。
Web 浏览器中的下载通常由 http content-type 或 content-disposition 标头触发,并且可以基于 mime 类型/文件扩展名映射。上述方案仅适用于文件扩展名从该位置派生的文件扩展名映射。要处理基于内容类型或内容处置标头的下载,您可能需要实现自己的 java.net url 连接处理程序。
要在核心 JavaFX 库中实现此功能,您可以查看 JavaFX Jira 以获取与此相关的功能请求,如果没有,请创建新功能请求。
【讨论】: