发布日期 2016年6月8日
JxBrowser 6.5
主要变更
在此更新中,我们重点实现了客户期待已久的功能,例如访问 HTTP 响应数据(AJAX 响应主体)、支持多个 HTTP 标头、手势事件监听器、获取选定的 HTML、更好地支持输入法编辑器(IME)和不同的键盘语言等等。
从版本 6.4 升级
如果您的项目中已经使用了 JxBrowser 6.4 版本,您可以顺利切换到 6.5 版本,因为它也基于 Chromium 49,并且其 API 与前一个版本向后兼容。
功能和改进
以下是 JxBrowser 6.5 中新增功能的详细概述:
NetworkDelegate.onDataReceived(DataReceivedParams params)
方法。每次接收到响应体或其部分时,都会调用此方法。这意味着现在您可以获取每个 HTTP 响应的数据,包括 HTML、纯文本、图像二进制数据等。您还可以利用此功能访问 AJAX 响应体。HttpHeadersEx
类。HttpHeaders
类(从版本 6.5 开始已弃用)仅允许按名称获取一个 HTTP 标头值。当 HTTP 标头具有多个同名值时,无法获取多个 HTTP 标头值。HttpHeadersEx
类通过允许访问具有相同名称的 HTTP 标头的多个值解决了该问题。- **支持设置保存网页为 PDF 文档时的纸张大小。**在之前的 JxBrowser 版本中,此情况下的纸张大小被硬编码为 A4 格式。现在,您可以使用任意纸张大小。
- **为打印页面指定自定义纸张大小的能力。**现在,您可以在打印网页时以毫米或英寸为单位指定自己的纸张大小。
- 允许获取已加载网页上选定的 HTML 的功能。
- **
HeadersReceivedParams
类中的getContentLength()
、getCharset()
、getMimeType()
、getStatusLine()
方法。**例如,您可以使用getStatusLine()
方法获取有关响应状态码和原因短语的信息。 - **
Browser.isAudioPlaying()
方法。**使用此方法可以确定当前加载的网页上是否正在播放音频。 - **
BrowserView.setGestureEventsHandler()
方法。**当注册后,它允许您在 JavaFX 和 Swing 实现中启用重量级渲染模式时处理手势事件。在轻量级渲染模式下,此处理程序不会被使用。 - 在轻量级的 JavaFX
BrowserView
组件中,**支持具有不同设备缩放比例的多个显示器。**在之前的 JxBrowser 版本中,如果将嵌入轻量级BrowserView
组件的 JavaFX 场景/窗口从普通显示器移动到 Retina 显示器,渲染效果不会针对 Retina 显示器进行优化。结果是加载的网页图像会模糊。现在,库会检测组件是否从一个显示器移动到另一个显示器,并更新轻量级渲染参数,以便在当前显示器上以最佳质量显示网页。 - **支持文件保存对话框。**我们发现某些 Flash 内容可能会显示一个文件保存对话框,而默认的
DialogHandler
实现不支持此功能。在此次更新中,我们修复了这个问题,因此现在支持文件保存对话框。 - **支持所有 Chromium 进程类型的崩溃转储文件生成。**在之前的 JxBrowser 版本中,我们仅为 Main Chromium 进程生成崩溃转储文件。如果渲染器或 GPU Chromium 进程崩溃,崩溃转储文件将不会生成。
JxBrowser 6.5 修复了以下问题:
- Chromium Engine 修改了 Mac OS X 上 Java 进程的最大打开文件数 (ulimit -n)。在 Mac OS X 上,Java 进程可以同时打开 10240 个文件/流。我们注意到,当 Java 进程中初始化
Browser
实例时,该值会更改为 1024。原因在于 Chromium Engine 在初始化期间修改了该值。现在,Chromium Engine 首先检查初始值,只有当其大于 1024 时才对其进行修改。 - 弹出窗口中的打印功能无法正常工作。 这是在升级到 Chromium 49 后出现的回归问题。现在,一切已恢复正常。
- Mac OS X 上的德语键盘支持系统键,例如 Alt、Cmd、Control、Shift。该问题仅在轻量级渲染模式下可重现。我们修复了该问题并确保其他键盘在 Mac OS X 上按预期工作。
- 在 Windows 上保存大型 HTML 文档(20MB+)为 PDF 文档或显示包含大图像的弹出窗口时 Chromium 崩溃,且没有内存不足错误。为了解决此问题,我们在 Windows 上构建 JxBrowser 时使用了
/LARGEADDRESSAWARE
链接器标志。官方 Chromium 构建也使用了这个标志。 - 当在 Windows 上启用重量级渲染模式时,
BrowserView
组件会抛出"java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location"
错误。 - 通过 JavaScript–Java Bridge 发送表情符号时出现了
"IllegalArgumentException: Unsupported type: :"
错误。这个问题是由于 Mac OS X 上表情符号的字符串长度不正确引起的。 - 改进了 Windows 8+ 触摸设备上的屏幕键盘支持。 我们发现,当通过鼠标点击激活
BrowserView
组件时,屏幕键盘工作正常,可以在 JxBrowser 加载的网页中的文本字段中输入内容。但是,当通过点击/触摸事件激活BrowserView
组件时,BrowserView
组件未能获得焦点。因此,用户无法使用屏幕键盘在加载的网页上的文本字段中输入内容。在此次更新中,我们修复了这个问题,现在屏幕键盘与 JxBrowser 的交互方式与 Google Chrome 完全相同。 - 全屏模式下下拉菜单不显示。 这个问题在重量级渲染模式下可重现。我们已经修补了 Chromium Engine,使下拉菜单在全屏模式下能够正常工作。
- 当 IME(日语、拼音)处于活动状态时,无法访问单选按钮、复选框和按钮或通过空格键选择它们。在之前的 JxBrowser 版本中,当焦点转到单选按钮或复选框时,我们没有更新 IME 状态。现在,这一功能的表现与 Google Chrome 中的完全相同。
请发送电子邮件至 customer-care@teamdev.com 以获取 JxBrowser 6.5 的下载链接。
关注 @JxBrowserTeam ,获取库的更新动态。
订阅我们的 RSS feed ,获取最新版本动态。