List icon 目录

发布日期 2020年5月15日

JxBrowser 7.7

我们很高兴向您介绍 JxBrowser 7.7!此更新是该库历史上的一个新篇章。在此版本中,我们为 SWT/Eclipse RCP 应用程序引入了纯 SWT BrowserView 控件。

SWT

该库现在提供了纯 SWT com.teamdev.jxbrowser.view.swt.BrowserView 控件,可以嵌入到 SWT/Eclipse RCP 应用程序中。

以下是一个简单示例,演示了如何在一个简单的 SWT 应用程序中使用 SWT BrowserView

import static com.teamdev.jxbrowser.engine.RenderingMode.HARDWARE_ACCELERATED;

import com.teamdev.jxbrowser.browser.Browser;
import com.teamdev.jxbrowser.engine.Engine;
import com.teamdev.jxbrowser.engine.EngineOptions;
import com.teamdev.jxbrowser.view.swt.BrowserView;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public final class HelloWorld {

    public static void main(String[] args) {
        // 创建并运行 Chromium Engine。
        Engine engine = Engine.newInstance(
                EngineOptions.newBuilder(HARDWARE_ACCELERATED).build());

        Browser browser = engine.newBrowser();
        // 加载所需的网页。
        browser.navigation().loadUrl("https://html5test.teamdev.com");

        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setText("JxBrowser SWT");
        shell.setLayout(new FillLayout());

        // 创建 SWT 组件用于渲染加载到 Browser 实例中的 Web 内容。
        BrowserView view = BrowserView.newInstance(shell, browser);
        view.setSize(800, 600);

        shell.pack();
        shell.open();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        // 关闭 Engine 并释放所有分配的资源。
        engine.close();
        display.dispose();
    }
}

JxBrowser SWT Example

Eclipse RCP

SWT 工具包经常用于 Eclipse RCP 应用程序中,因此我们准备了一个简短的教程介绍如何在 Eclipse RCP 应用程序中使用 JxBrowser 的 SWT BrowserView

JsFunction

JsFunction 类已在 JavaScript-Java Bridge API 中恢复。现在,您可以直接从 Java 代码与 JavaScript 函数交互,并将函数引用从 JavaScript 传递到 Java,反之亦然。例如:

JsObject window = frame.executeJavaScript("window");
if (window != null) {
    JsFunction alert = frame.executeJavaScript("window.alert");
    if (alert != null) {
        alert.invoke(window, "Hello world!");
    }
}

改进

  • 因为在 Chromium 进程中加载时间和内存使用方面的改进,网页的加载速度现在比以前的版本快了两倍。
  • JxBrowser 现在支持 Firebase Cloud Messaging(Firebase 云消息传递)
  • 增加了对 WebAssembly 的支持。
  • 在此版本中,您可以在网页上渲染 HTML 的 <datalist> 标签。
  • Web 表单的自动填充功能现在默认禁用。
  • 在 Linux 上,您现在可以通过 Swing/JavaFX 的 BrowserView 组件实现文件、图像和文本的拖放功能,因为已经移除了在两种渲染模式下的拖放功能限制。
  • 由于 JxBrowser 仅支持 Linux 的 64 位版本,因此在尝试在 32 位 Linux 上运行时,现在会抛出异常。这是通过新的 Environment.checkEnvironment() 方法实现的,该方法负责检测这种不受支持的环境。

已修复的问题

  • 当启用硬件加速渲染模式时,嵌入到 javax.swing.JApplet 中的 Swing BrowserView 组件不可见。
  • 内部测试资源被排除在 JAR 文件之外。
  • 在 Windows 上,通过鼠标点击设置 Swing BrowserView 时,不会清除当前聚焦的 Swing 组件的焦点。
  • 在 Windows 上,以硬件加速渲染模式显示 Swing BrowserView 时会出现 IllegalArgumentException 错误。
  • 在 Windows 的离屏渲染模式下,将 Swing BrowserView 嵌入到 JScrollPane 中时出现双重内容渲染问题。
  • 在离屏渲染模式下,当加载的网页正在进行重绘时,关闭 Browser 会导致程序冻结。
  • 在 Windows 上的硬件加速渲染模式下,点击嵌入到 JFXPanel 中的 JavaFX BrowserView 后,Swing 应用程序无法接收焦点。
  • Google reCAPTCHA 无法通过 Tab 键接收焦点。
  • 在离屏渲染模式下,无法在位于网页中 IFRAME 内的文本字段中输入任何内容。
  • 在 Windows 的离屏渲染模式下,关闭嵌入 BrowserView 组件的窗口会导致所有 Browser 实例关闭。
  • 在 Windows 和 Linux 上由于时间控制问题关闭离屏渲染模式下的 Engine 时会冻结。
  • 在 Windows 和 Linux 上,取消订阅 BrowserClosed 事件后,关闭 Engine 时会冻结。
  • 加载 chrome://settings 网页时,Chromium 崩溃。此网页现已被禁用。
  • 当 Swing BrowserView 组件嵌入到 JDialog 并启动文件下载时,会出现 ClassCastException 错误。
  • 在 Linux 硬件加速渲染模式下全屏模式中出现单像素白色垂直线。
  • 在 macOS 上 Engine 崩溃或意外终止时,Chromium 日志文件会在包含 Chromium 二进制文件的目录中创建。
  • 在 Ubuntu 上的硬件加速渲染模式下,BrowserView 组件内出现白色角区域。

下载 JxBrowser 7.7

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

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

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

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

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

获取免费 30 天体验