JxBrowser是将基于Chromium的浏览器与Java应用程序集成,以处理和显示HTML五、CSS三、JavaScript、Flash等。浏览器
近日,JxBrowser v7.10发布啦!优化屏幕外渲染模式,优化Chromium功能,扩展获取网页上当前聚焦的HTML元素的方法,拼写检查功能已恢复,同时修复多项Bug。如下是具体的更新内容。(点击下载最新版)安全
新增功能
渲染效果优化cookie
屏幕外渲染模式已从新实现,以提升其在全部受支持的平台和UI工具包上的渲染性能。如下是在不一样平台上以每秒帧数(FPS)的HTML5视频进行渲染性能测试的结果: 网络
Windows ide
- 配备GPU GTX 1070的Intel Core i7 7700k 4.2 GHz
- 影片尺寸:1920x1080
macOS工具
- MacBook Pro 15英寸,英特尔酷睿i7 2.9GHz,带有GPU Radeon Pro 650 4GB
- 影片尺寸:2880x1800
Linux性能
- AMD FX-8300 3.3 GHz与GPU Radeon RX 480
- 影片尺寸:1920x1080
Chromium Traffic测试
Chromium的功能,如谷歌云端通信,翻译排序器,扩展更新,安全浏览,拼写检查,Widevine的等发出请求外部谷歌的网络服务,如https://ssl.gstatic.com, https://clients4.google.com, etc.优化
当没法访问Web服务或您不但愿这些额外流量时,可使用如下API:ui
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()方法调度键盘事件时的顺序不正确。