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