List icon 目录

发布日期 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 响应体。
  • HttpHeadersExHttpHeaders类(从版本 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 的下载链接。