Java应用程序浏览器集成控件JxBrowser v7.17新版发布!Chromium升级至v91

原创|产品更新|编辑:李显亮|2021-07-22 11:16:56.437|阅读 35 次

概述:JAVA应用程序浏览器集成控件JxBrowser更新至7.17, 在此版本中,此版本支持 Chromium 配置文件、JavaScript Promise API、网络连接状态更改时的通知以及许多改进和修复,欢迎下载体验。

# 31款JAVA开发必备控件和工具 # 企业数字化建设合规无风险[专题]

JxBrowser是将基于Chromium的浏览器与Java应用程序集成,以处理和显示HTML5、CSS3、JavaScript、Flash等。

近日,JxBrowser v7.17发布啦! 在此版本中,此版本支持 Chromium 配置文件、JavaScript Promise API、网络连接状态更改时的通知以及许多改进和修复,欢迎下载体验。

点击下载最新版JxBrowser

新增功能

Chromium 91

Chromium已经更新到91.0.4472.114版本。这个Chromium版本包括几个重要的安全修复,一些Chromium的功能已经被删除或改变。

配置文件

在这个版本中,我们扩展了API的功能,允许管理Chromium配置文件。现在,该架构有如下结构。

Java应用程序浏览器集成控件JxBrowser v7.17新版发布!Chromium升级至v91

每个引擎都有一个默认的配置文件,你可以通过以下方式访问:

Profile defaultProfile = engine.profiles().defaultProfile();

要创建一个新的普通或隐身档案,请使用以下API:

Profiles profiles = engine.profiles();
Profile myProfile = profiles.newProfile("MyProfile");
Profile myIncognitoProfile = profiles.newIncognitoProfile("MyIncognitoProfile");

每个浏览器实例都有一个配置文件。要为特定的配置文件创建一个浏览器实例,请使用以下方法:

Browser browser = profiles.defaultProfile().newBrowser();
...
Profile myProfile = profiles.newProfile("MyProfile");
Browser browser = myProfile.newBrowser();

为了向后兼容,我们没有改变引擎的接口。它只是将其调用委托给了默认的配置文件。比如说:

Browser browser = engine.newBrowser();
// is equivalent of
Browser browser = engine.profiles().defaultProfile().newBrowser();
CookieStore cookieStore = engine.cookieStore();
// is equivalent of
CookieStore cookieStore = engine.profiles().defaultProfile().cookieStore();

如果你用用户数据目录配置了Engine,那么所有创建的profile将在应用程序重启之后被恢复,除非你通过Profiles.delete(Profile)删除一个profile。

JS Promises

新版本从JavaScript到Java类型的自动类型转换,反之亦然,已经扩展了对JavaScript Promise的支持。现在,可以通过全新的JsPromise类型与JavaScript Promises一起工作。

JsPromise promise = frame.executeJavaScript(
        "new Promise(function(resolve, reject) {\n"
                + "    setTimeout(function() {\n"
                + "        resolve('Hello Java!');\n"
                + "    }, 2000);"
                + "})");
promise.then(results -> {
    System.out.println(results[0]);
    return promise;
}).then(results -> {
    System.out.println(results[0]);
    return promise;
}).catchError(errors -> {
    System.out.println(errors[0]);
    return promise;
});

网络连接状态

Chromium在内部跟踪互联网的连接状态。当互联网连接中断后又恢复时,Chromium会检测到这一点并以编程方式重新加载当前加载的网页。在这个版本中,我们用这个功能扩展了API。现在,当网络连接状态发生变化时,你可以得到通知。比如说:

network.on(NetworkChanged.class, e -> {
    // If the connection type is TYPE_NONE, there is no connection.
    if (e.connectionType() == ConnectionType.TYPE_NONE) {
        // The network connection has been dropped. We are offline.
    } else {
        // The network connection has been restored.
    }
});

增强功能

  • NavigationFinished事件已被扩展为isFragmentNavigation(),它表明是否已对同一文档中的一个片段进行了导航。

Bug修复

  • 当JavaFX BrowserView被嵌入到TabPane中时,原生Chromium窗口被分离,在硬件加速渲染模式下,Linux上最小化后,舞台被恢复。
  • 在使用设置的桌面亲和力API后关闭浏览器时,Chromium崩溃。
  • 在硬件加速渲染模式下,Linux上显示Java窗口时,浏览器会窃取输入焦点。
  • 试图在 Frame.viewSource() 打开的弹出式浏览器中执行 UI 相关的方法,在 Windows 上会导致本地崩溃。
  • 在macOS上用Swing BrowserView显示的网页内的D&D丢失的下降数据。
  • 在离屏渲染模式下支持Swing D&D功能中的自定义文本表示。

慧都是TeamDev官方友好合作伙伴,如果您对jxbrowser感兴趣,可以联系在线客服了解具体授权价格和使用机制。

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至hey@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
在线咨询
联系我们
TOP
在线客服系统
live chat