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()方法調度鍵盤事件時的順序不正確。