JxBrowser是將基于Chromium的瀏覽器與Java應用程序集成,以處理和顯示HTML5、CSS3、JavaScript、Flash等。
近日,JxBrowser v7.12發布啦!JAVA應用程序瀏覽器集成控件JxBrowser更新至7.12, 現在可以在Chromium 84上運行,并且在使用DOM和JavaScript-Java Bridge API時提供了許多新選項,歡迎下載體驗。
點擊下載最新版JxBrowser
新增功能
Chromium 84
在這個Chromium構建中,一些與JxBrowser封裝的功能已經被移除或改變,所以這個JxBrowser版本在公共API中引入了一些突破性的變化。
可信事件
com.teamdev.jxbrowser.dom.event.Event接口已經擴展了isTrusted()方法,允許檢測事件是由用戶操作產生的,還是通過EventTarget.dispatchEvent()創建/修改并發送的。
MouseEvent:頁面位置
com.teamdev.jxbrowser.dom.event.MouseEvent接口已經擴展了pageLocation(),允許獲取事件發生時鼠標光標在文檔坐標系中的位置。
MouseEvent:頁面位置
允許從com.teamdev.jxbrowser.dom.event.KeyEvent中獲取鍵碼的功能已經被重新設計為與DOM KeyboardEvent類似。我們為DOM鍵碼引入了DomKeyCode枚舉,并擴展了com.teamdev.jxbrowser.dom.event.KeyEvent的方法,允許獲取DOM鍵碼和一個代表與物理鍵相關聯的UTF-8字符的字符串,如果它有打印表示的話。例如
document.addEventListener(EventType.KEY_PRESS, event -> {
if (event instanceof KeyEvent) {
KeyEvent keyEvent = (KeyEvent) event;
DomKeyCode keyCode = keyEvent.domKeyCode();
String character = keyEvent.character();
System.out.println("DOM KeyEvent: keyCode=" + keyCode + ", character=" + character);
}
}, false);
JS可訪問的Java類
JavaScript-Java Bridge API已經擴展了com.teamdev.jxbrowser.js.JsAccessibleClasses,它允許告訴人們特定類型的Java實例可以從JavaScript中訪問。例如
JsAccessibleClasses.add(ArrayList.class, LinkedList.class);
Cookie SameSite
增加了SameSite cookie屬性支持。
改進功能
-
通過了在離屏渲染模式下檢查 "MovementX和MovementY在鼠標事件中的變化 "的JS測試。
-
Frame.isMain()方法不再向Chromium引擎發送請求,以找出這個框架是否是瀏覽器中的主(頂層)框架。現在,這個信息會在創建一個Frame時提供,并緩存起來供進一步調用。
-
現在不允許運行JxBrowser Chromium二進制文件中附帶的Chromium可執行文件。JxBrowser所使用的Chromium二進制文件應該只供JxBrowser使用,用戶不應該能夠直接運行它并將其作為普通的Web瀏覽器應用程序使用。
-
允許將JavaFX BrowserView嵌入到繼承JFXPanel的容器中。例如
JFXPanel fxPanel = new MyJFXPanel();
BrowserView view = BrowserView.newInstance(browser);
fxPanel.setScene(new Scene(new BorderPane(view), 600, 600));
private static final class MyJFXPanel extends JFXPanel {}
-
TextFinder Javadoc已經擴展了更多的細節,包括文本搜索的工作方式,如何突出顯示匹配,如何檢測第一個匹配等等。
-
默認情況下,Chromium會在二進制文件所在的目錄下創建debug.log文件。在某些環境下,對這個目錄的訪問可能是被禁止的,操作系統可能會報告這種嘗試。從這個版本開始,Chromium將不再創建debug.log文件,相應的日志信息將被重定向到JxBrowser日志中。
-
現在,庫中使用的Chromium構建是使用is_official_build=true標志構建的。官方Chromium構建會禁用Google Chrome官方構建中禁用的實驗性學習配置。其中有一個實驗性的功能在以前的JxBrowser版本中被啟用了,就是頁面凍結,可能會凍結網頁并停止JavaScript的執行。因此,該庫使用的Chromium引擎在內部功能的啟用/禁用方面變得更接近官方Chromium構建。
-
觸發Windows審計失敗的功能被禁用。這個問題是由于Chromium從Windows API中調用LogonUser()函數,并向其傳遞了一個空的密碼。我們通過禁用試圖使用空密碼登錄的功能來解決這個問題。這個變化不影響任何其他Chromium功能。
Bug修復
-
Chromium渲染進程崩潰時不顯示 "Aw, snap"頁面。
-
在Windows上的離屏渲染模式下,JavaFX在7.9中引入的破損渲染。
-
在Linux下,在硬件加速渲染模式下,隱藏和顯示嵌入BrowserView的JFrame后不顯示網頁內容。
-
離屏渲染模式下忽略了HTML5拖拽事件中的空數據味道,導致部分HTML5 DnD事件根本無法工作。
-
離屏渲染模式下從文件系統拖動文件到Swing BrowserView實例時出現NullPointerException錯誤。
-
在離屏渲染模式下,在顯示主舞臺后,用嵌入式BrowserView實例顯示JavaFX場景時,出現NullPointerException錯誤。
-
CookieStore沒有保存帶有未指定SameSite屬性的Cookie。
-
當在PDF瀏覽器中右擊時,ShowContextMenuCallback沒有被調用。
-
在使用NVidia GeForce 1650和430.64驅動版本的Linux上,離屏渲染不工作。
-
JavaScript-Java Bridge功能不能調用標有@JsAccessible注解的Java方法,如果有其他方法與之同名。
-
當引擎實例在Incognito模式下運行時,拼寫檢查器字典沒有被配置。
-
在macOS上SWT的硬件加速渲染模式下,打印預覽對話框的渲染中斷。
-
在macOS上SWT的離屏渲染模式下,打印預覽對話框不顯示。
-
在Windows和Linux上的硬件加速渲染模式下,在網頁上右擊Flash時,默認的Swing BrowserView上下文菜單不可見。
-
在macOS上,瀏覽器無法調整到小于300px的大小。
-
EventType.DOUBLE_CLICK的DOM事件監聽器從未被調用。
-
在離屏渲染模式下,EnterMouseCallback和ExitMouseCallback沒有被調用。在Windows和Linux的硬件加速渲染模式下,EnterMouseCallback無法被調用,因為它被Chromium引擎忽略了。
-
在離屏渲染模式下,SWT BrowserView組件在Eclipse的Part on tab開關中不可見。
-
在SWT中打印當前加載的網頁為PDF時,默認保存文件名錯誤。
-
在禁用Chromium流量的情況下,在已加載網頁的輸入欄中輸入一些文本時,拼寫檢查器初始化失敗。
-
在Windows的離屏渲染模式下,自定義CSS光標模糊。
-
在Windows的硬件加速渲染模式下,在SplitPane中添加/刪除JavaFX BrowserView時出現黑色閃爍。
-
在Windows的離屏渲染模式下,當顯示/隱藏BrowserView時,隨機出現黑色矩形閃爍。
-
注入到JavaScript中的Java對象中標有@JsAccessible注解的方法在關閉Browser時被多調用一次。
-
通過window.close()JavaScript函數關閉Swing BrowserView彈出式實例時出現的IndexOutOfBoundsException錯誤。
-
當加載一個SSL證書無效的HTTPS網頁時,ShowNetErrorPageCallback回調沒有被調用。
-
在離屏渲染模式下,不能將焦點設置為位于不同域的IFRAME內的HTML輸入字段。
-
恢復了對Firebase云消息的支持。
-
v7.8之后重新引入了macOS和Windows上的Widevine功能。
-
在離屏渲染模式下,不同的鼠標移動事件的MouseEvent.moveX和MouseEvent.moveY屬性應該是不同的。
-
macOS上mach_port功能相關的JNI中出現多個錯誤導致JVM崩潰。
慧都是TeamDev官方友好合作伙伴,如果您對jxbrowser感興趣,可以了解具體授權價格和使用機制。
標簽:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn