您的位置 首页 java

Java应用程序浏览器集成控件JxBrowser新版Chromium升级至v91

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

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

新增功能

Chromium 91

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

配置文件

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

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

 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功能中的自定义文本表示。

文章来源:智云一二三科技

文章标题:Java应用程序浏览器集成控件JxBrowser新版Chromium升级至v91

文章地址:https://www.zhihuclub.com/180787.shtml

关于作者: 智云科技

热门文章

网站地图