JAVA浏览器集成控件JxBrowser v7.10全新来袭!附下载
JxBrowser是将基于Chromium的浏览器与Java应用程序集成,以处理和显示HTML5、CSS3、JavaScript、Flash等。
近日,JxBrowser v7.10发布啦!优化屏幕外渲染模式,优化Chromium功能,扩展获取网页上当前聚焦的HTML元素的方法,拼写检查功能已恢复,同时修复多项Bug。以下是具体的更新内容。(点击下载最新版)
新增功能
渲染效果优化
屏幕外渲染模式已重新实现,以提高其在所有受支持的平台和UI工具包上的渲染性能。以下是在不同平台上以每秒帧数(FPS)的HTML5视频进行渲染性能测试的结果:
Windows
- 配备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:
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()方法调度键盘事件时的顺序不正确。