彩票走势图

JAVA浏览器集成控件JxBrowser v7.10全新上线!IPC消息顺序优化

原创|产品更新|编辑:李显亮|2020-08-21 10:18:03.297|阅读 343 次

概述:JAVA应用程序浏览器集成控件JxBrowser更新至7.10,优化屏幕外渲染模式,优化Chromium功能,扩展获取网页上当前聚焦的HTML元素的方法,拼写检查功能已恢复,同时修复多项Bug,欢迎下载体验。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

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

近日,JxBrowser v7.10发布啦!优化屏幕外渲染模式,优化Chromium功能,扩展获取网页上当前聚焦的HTML元素的方法,拼写检查功能已恢复,同时修复多项Bug。以下是具体的更新内容。

点击下载最新版JxBrowser

新增功能

渲染效果优化

屏幕外渲染模式已重新实现,以提高其在所有受支持的平台和UI工具包上的渲染性能。以下是在不同平台上以每秒帧数(FPS)的HTML5视频进行渲染性能测试的结果:

Windows

  • 配备GPU GTX 1070的Intel Core i7 7700k 4.2 GHz
  • 影片尺寸:1920x1080

JAVA浏览器集成控件JxBrowser v7.10全新上线!IPC消息顺序优化

macOS

  • MacBook Pro 15英寸,英特尔酷睿i7 2.9GHz,带有GPU Radeon Pro 650 4GB
  • 影片尺寸:2880x1800

JAVA浏览器集成控件JxBrowser v7.10全新上线!IPC消息顺序优化

Linux

  • AMD FX-8300 3.3 GHz与GPU Radeon RX 480
  • 影片尺寸:1920x1080

JAVA浏览器集成控件JxBrowser v7.10全新上线!IPC消息顺序优化

Chromium Traffic

Chromium的功能,如谷歌云端通讯,翻译排序器,扩展更新,安全浏览,拼写检查,Widevine的等发出请求外部谷歌的网络服务,如//ssl.gstatic.com, //clients4.google.com, etc.

当无法访问Web服务或您不希望这些额外流量时,可以使用以下API:

Engine engine = Engine.newInstance(
        EngineOptions.newBuilder(renderingMode)
                .disableChromiumTraffic()
                .build());

此选项仅允许禁用无法通过JxBrowser API访问的Chromium功能。例如,可以通过JxBrowser API访问SpellChecker和Widevine功能,因此该选项不会禁用由这些功能引起的流量。

重点DOM元素

DOM API已使用Document.focusedElement()允许获取网页上当前聚焦的HTML元素的方法进行了扩展:

document.focusedElement().ifPresent(element -> {
    ...
});

改进功能

  • 拼写检查功能已恢复。
  • com.teamdev.jxbrowser.view.swt.callback.DefaultStartDownloadCallback现在会在目标文件存在并将被覆盖时提示。
  • DevTools.remoteDebuggingUrl()方法现在返回可以在没有互联网连接的情况下使用的URL。
IPC消息顺序

在以前的版本中,调用同步回调时,可能会更改IPC消息顺序。例如,通过该Browser.dispatch()方法调度键盘事件可能会导致网页文本字段中字母随机混合的问题。

在此版本中,我们改进了内部IPC逻辑以消除此类情况。这项改进对如何处理同步回调中的代码提出了一项重要要求。如果您执行一些逻辑,从而在同步回调内的单独线程中对库进行同步调用,并阻塞等待该逻辑执行之前的回调,则可能会出现死锁:

// Register a synchronous callback.
browser.set(SomeSyncCallback.class, params -> {
    // Invoke some logic in a separate thread and block the current
    // thread execution until the logic has been executed.
    invokeInSeparateThreadAndWait(() -> {
        // Invoke a synchronous method.
        browser.someSyncMethod(); // <-- Deadlock: this method will never return. }); return Response.proceed(); });

要摆脱僵局,请改用以下方法:

// Register a synchronous callback.
browser.set(SomeSyncCallback.class, params -> {
    // Invoke a synchronous method.
    browser.someSyncMethod();
    return Response.proceed();
});

Bug修复

  • BrowserView在macOS上以硬件加速渲染模式调整大小时,意外的内容缩放。
  • NavigationException: Failed to load resource: ABORTED后续Navigation.loadUrlAndWait()调用中的错误。
  • BrowserView在Windows上以硬件加速渲染模式退出并返回时,鼠标停留在平移上。
  • BrowserView隐藏Stage在屏幕外渲染模式后未显示JavaFX 。
  • 关闭引擎时发生碰撞或冻结。
  • 在Windows上以硬件加速呈现模式显示BrowserView时崩溃。
  • 库经常卡在IpcLibrary.sendData()上。
  • Swing、JavaFX和SWT UI工具包类必须位于单独的jar中,但它们位于jxbrowser.jar中。
  • 焦点恢复功能不能正常工作在SWT浏览器视图。
  • xpath()方法生成不正确的节点索引。
  • 引擎初始化停留在调用ldd命令来检查Linux上缺少的系统库。
  • 访问非空cookie存储时死锁。
  • Windows Server 2012上的Chromium欢迎页面。
  • 使用Browser.dispatch()方法调度键盘事件时的顺序不正确。

标签:

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


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP