List icon 目录

发布日期 2020年11月6日

JxBrowser 7.12

好消息!JxBrowser 7.12 正式发布,现已升级至 Chromium 84 内核!

由于 Chromium 84 API 中的几个重大更改,我们对 JxBrowser 的公共 API 进行了一些更新。请查看从 JxBrowser 中移除的 API 部分,以及我们建议使用的替代方案。

Chromium 84

Chromium 已更新至 84.0.4147.135 版本。

在此 Chromium 版本中,JxBrowser 中包含的一些功能已被删除或更改,因此该 JxBrowser 版本在公共 API 中引入了几项重大更改。

请查看此版本的迁移指南,了解哪些 API 已更改/移除以及应使用哪些替代方法。

DOM

可信事件

com.teamdev.jxbrowser.dom.event.Event 接口已扩展 isTrusted() 该方法允许检测事件是由用户操作生成,还是通过 EventTarget.dispatchEvent() 方法创建、修改并分发的。

MouseEvent:页面位置

com.teamdev.jxbrowser.dom.event.MouseEvent 接口已扩展 pageLocation() 方法,该方法允许获取事件发生时鼠标光标在文档坐标系中的位置。

KeyEvent:键码

获取 com.teamdev.jxbrowser.dom.event.KeyEvent 键码的功能已重新设计,使其类似于 DOM KeyboardEvent。我们引入了 DomKeyCode 枚举来表示 DOM 键码,并扩展了 com.teamdev.jxbrowser.dom.event.KeyEvent,添加了获取 DOM 键码和表示与物理键关联的 UTF-8 字符串的方法(如果该键有打印表示)。例如:

document.addEventListener(EventType.KEY_PRESS, event -> {
    if (event instanceof KeyEvent) {
        KeyEvent keyEvent = (KeyEvent) event;
        DomKeyCode keyCode = keyEvent.domKeyCode();
        String character = keyEvent.character();
        System.out.println("DOM KeyEvent: keyCode=" + keyCode + ", character=" + character);
    }
}, false);

JS 可访问的 Java 类

JavaScript-Java 桥接 API 已扩展 com.teamdev.jxbrowser.js.JsAccessibleClasses,该类允许指定类型的 Java 实例可以从 JavaScript 中访问。例如:

JsAccessibleClasses.add(ArrayList.class, LinkedList.class);

Cookie SameSite

已添加对 SameSite Cookie 属性的支持。

改进

  • 现在该库在离屏渲染模式下通过了检测 “MovementXMovementY 在鼠标事件中变化” 的 JS 测试。
  • 从此版本开始,Frame.isMain() 方法不再向 Chromium Engine 发送请求来确定该 Frame 是否是 Browser 中的主(顶级)Frame。现在,这些信息在创建 Frame 时提供,并缓存以供后续调用。
  • 现在不允许运行与 JxBrowser Chromium 二进制文件一起提供的 Chromium 可执行文件。JxBrowser 使用的 Chromium 二进制文件仅供 JxBrowser 使用,用户不应能够直接运行它并将其用作常规的 Web Browser 应用程序。
  • 现在允许将 JavaFX 的 BrowserView 嵌入到继承自 JFXPanel 的容器中。例如:
    JFXPanel fxPanel = new MyJFXPanel();
    BrowserView view = BrowserView.newInstance(browser);
    fxPanel.setScene(new Scene(new BorderPane(view), 600, 600));
    
    private static final class MyJFXPanel extends JFXPanel {}
    
  • TextFinder 的 Javadoc 已扩展,提供了关于文本搜索如何工作、如何高亮显示匹配项、如何检测第一个匹配项等额外详细信息。
  • 默认情况下,Chromium 会在二进制文件所在目录中创建 debug.log 文件。在某些环境中,访问该目录可能被禁止,操作系统可能会报告此类尝试。从此版本开始,Chromium 将不再创建 debug.log 文件,相应的日志消息将重定向到 JxBrowser 日志中。
  • 现在,库中使用的 Chromium 构建是使用 is_official_build=true 标志构建的。官方的 Chromium 构建禁用了在官方 Google Chrome 构建中禁用的实验性 Study Configurations(测试配置)。在 JxBrowser 之前的版本中启用的实验性功能之一是 Page Freezing(页面冻结),该功能可能会冻结网页并停止 JavaScript 执行。因此,库中使用的 Chromium Engine 在启用/禁用的内部功能方面变得更接近官方 Chromium 构建。
  • 已禁用触发 Windows Audit Failures(Windows 审核失败) 的功能。此问题由 Chromium 调用 Windows API 中的 LogonUser() 函数,并传递空密码导致。我们通过禁用尝试使用空密码登录的功能解决了此问题。此更改不会影响任何其他 Chromium 功能。

已修复的问题

  • 当 Chromium 渲染进程崩溃时,不再显示 “Aw, snap” 页面。
  • 在 Windows 上,JavaFX 7.9 版本中,离屏渲染模式下出现渲染错误。
  • 在 Linux 上,在硬件加速渲染模式下隐藏和显示带有嵌入式 BrowserViewJFrame 后,Web 内容不显示的问题。
  • 在离屏渲染模式下,带有空数据类型的 HTML5 拖放事件被忽略,这导致部分 HTML5 拖放事件完全无法工作。
  • 在离屏渲染模式下,从文件系统拖动文件到 Swing 的 BrowserView 实例时出现 NullPointerException 错误。
  • 在离屏渲染模式下,主 Stage 显示后,尝试显示包含嵌入式 BrowserView 实例的 JavaFX Scene 时出现 NullPointerException 错误。
  • CookieStore 不保存未指定 SameSite 属性的 Cookies。
  • 在 PDF 查看器内部右键点击时,ShowContextMenuCallback 未被调用。
  • 在 Linux 上使用 NVidia GeForce 1650 和 430.64 驱动版本时,离屏渲染无法正常工作。
  • 如果存在其他同名方法,则 JavaScript-Java Bridge 功能无法调用被 @JsAccessible 注解标记的 Java 方法。
  • Engine 实例在隐身模式下运行时,拼写检查词典未被配置。
  • 在 macOS 上的 SWT 中,使用硬件加速渲染模式时,Print Preview(打印预览)对话框中的渲染出现问题。
  • 在 macOS 上的 SWT 中,离屏渲染模式下未显示 Print Preview 对话框。
  • 在 Windows 和 Linux 上,在硬件加速渲染模式下,右键单击网页上的 Flash 时,默认的 Swing BrowserView 上下文菜单不可见。
  • 在 macOS 上,无法将 Browser 调整为小于 300px 的大小。
  • EventType.DOUBLE_CLICK 的 DOM 事件监听器从未被调用。
  • 在离屏渲染模式下,EnterMouseCallbackExitMouseCallback 未被调用。在 Windows 和 Linux 上的硬件加速渲染模式下,EnterMouseCallback 由于被 Chromium Engine 忽略而无法被调用。
  • 在离屏渲染模式下,在 Eclipse 的 Part 切换标签时,SWT BrowserView 组件不可见。
  • 在 SWT 中将当前加载的网页打印为 PDF 时,默认保存文件名错误。
  • 在禁用 Chromium 流量的情况下,在加载的网页上的输入字段中键入一些文本时,拼写检查器初始化失败。
  • 在离屏渲染模式下,自定义 CSS 光标在 Windows 上模糊。
  • 在 Windows 的硬件加速渲染模式下,将 JavaFX BrowserView 添加到 SplitPane 或从中移除时,出现黑色闪烁。
  • 在 Windows 的离屏渲染模式下,显示/隐藏 BrowserView 时,屏幕会随机出现黑色矩形闪烁。
  • 当关闭 Browser 时,注入到 JavaScript 中的 Java 对象上标记有 @JsAccessible 注解的方法会被多调用一次。
  • 通过 window.close() JavaScript 函数关闭 Swing BrowserView 弹出实例时,会出现 IndexOutOfBoundsException 错误。
  • 加载具有无效 SSL 证书的 HTTPS 网页时,ShowNetErrorPageCallback 回调不会被调用。
  • 在离屏渲染模式下,无法将焦点设置到具有不同域的 IFRAME 内的 HTML 输入字段。
  • 恢复支持 Firebase Cloud Messaging
  • 在 v7.8 之后重新引入 macOS 和 Windows 上的 Widevine 功能。
  • 在离屏渲染模式下,对于不同的鼠标移动事件,MouseEvent.movementXMouseEvent.movementY 属性应该有所不同。
  • 在 macOS 上由于与 mach_port 功能相关的多个 JNI 错误导致 JVM 崩溃。

下载 JxBrowser 7.12

请提供您的电子邮箱地址,我们会尽快将下载说明发送给您。

发送...
请检查您的收件箱。

我们无法发送电子邮件。请使用直接链接下载JxBrowser。

如果您已经是我们的注册客户,您无需任何操作,即可轻松享受此次更新。

如果您希望深入了解并体验我们的产品,您可以申请评估许可证。

获取免费 30 天体验