在被Jcef的時不時卡死折磨以後,我開始了翻譯JxBrowser文檔的旅程(非手工翻譯)。html
接觸了JxBrowser後,我被它強大的力量所折服,不得不說,比Jcef好太多,讓我直接放棄了Jcef。最重要的一點,它不須要JCEF那麼多花裏胡哨的編譯。(用做我的項目確實是個不錯的選擇)git
JxBrowser是一個跨平臺的Java庫,容許將基於Google Chromium的Web瀏覽器組件集成到Java Swing / AWT / JavaFX應用程序中。使用JxBrowser,您能夠將輕量級Swing / JavaFX組件嵌入到Java應用程序中,以顯示現代網頁,支持最新的Web標準,如HTML5,CSS3,JavaScript等。github
這是他官網的描述:JxBrowser可使用HTML + CSS + JavaScript構建Java桌面應用程序UI。這意味着您可使用任何現代HTML5 UI工具包(如easyui,bootstrap)來構建用戶界面友好的Java桌面應用程序。您能夠解僱Swing/AWT開發人員,由於HTML + CSS + JavaScript開發人員能夠構建Java應用程序的GUI,它大大下降了Java項目開發的成本。ajax
(Swing/AWT開發工程師:???)bootstrap
(注:以上翻譯內容請自行對照谷歌翻譯,不保證其真實性)瀏覽器
獲取JxBrowser的最新版本:https://jxbrowser-support.teamdev.com/release-notes/2020/v6-24-3.html (英文看不懂?谷歌瀏覽器右鍵,翻譯成中文)緩存
截止本文發佈日期,6.x最新版本是2020年3月16號的6.24.3。服務器
相關資料都可在百度雲盤獲取(開發文檔[英文原文檔,帶中文翻譯的文檔],帶中文翻譯的幫助文檔(來源:https://jxbrowser.support.teamdev.com/support/solutions),所需的Jar(6.24.3),Demo。由於我最先接觸的是6.23.1,因此帶中文翻譯的開發文檔是6.23.1版本):https://pan.baidu.com/s/1P7gMI8-0Bi8aIDE1d4C0ng 提取碼: k6xp --來自百度網盤超級會員v4的分享cookie
文檔資料CSDN下載地址:https://download.csdn.net/download/xymmwap/12909790 (下載須要1積分,CSDN下載積分用不完的朋友能夠去這裏下載,讓本人賺點積分,以備偶爾須要的下載。感謝!) 網絡
開發文檔用於寫程序時查找類/方法的用法,幫助文檔用於入門、進階、刪庫跑路等。建議先把幫助文檔看一遍,照着例子寫一遍。
開源了我的項目供你們參考(需添加許可證信息才能正常運行,許可證怎樣得到?百度一大堆。JxBrowser官網能夠申請30天試用),功能和PowerOfLengedJcef差很少【含 腳本管理,代碼模板生成器,JxBrowser幫助文檔】:
github:https://github.com/lieyanfeimao/PowerOfLongedJxBrowser.git
碼雲:https://gitee.com/edadmin/PowerOfLongedJxBrowser.git
由於JxBrowser已經提供了詳細的Demo,這裏我沒有像Jcef同樣去寫個Demo工程了。
本文使用的Jxbrowser版本是:jxbrowser-6.24.3
由於優秀,因此它並難免費,請自行想辦法獲取許可證。若是它能幫到你,而你也資金充裕,建議購買正版。(錢是個好東西)
優勢:
完美支持各大視頻網站的視頻播放,頁面流暢不卡死(不能說百分百),支持Java與JS交互,支持ajax數據監聽。總之,牛的一匹。
我很喜歡這種JAVA和JS交互的方式,例如:var a=Java.test();
瑕疵:
我的以爲不友好的地方,對iframe頁面操做不甚方便,使用開發者工具[Debug模式]須要鏈接谷歌服務器(由於防火牆在,連不上),開發者工具很怪,操做沒谷歌瀏覽器的方便。Jcef在這兩點上作的就比較好。
另外,通過長時間沉澱,JxBrowser會在C盤下會生成大量緩存/數據文件,很容易撐爆磁盤。請參照幫助文檔 文獻資料(Documentation)>瀏覽器引擎(Browser Engine)>清除緩存(Clearing Cache) 進行處理
主要類介紹
先大概介紹一下經常使用的類,省得寫代碼的時候一臉懵逼(講我用過的吧)。相關類具體的說明請查看開發文檔。
Browser:瀏覽器主類,處理瀏覽器的相關操做,如執行JS、監聽事件等等,是一個很是重要的類。當你對瀏覽器作一些設置,如監聽事件、前進後退等,可查閱此類的文檔。它位於:com.teamdev.jxbrowser.chromium
BrowserContext:描述瀏覽器實例的上下文。提供指向將存儲Chromium數據文件(如cookie,歷史記錄,緩存)的目錄的路徑,並提供對上下文級別功能(如NetworkService)的訪問。具備相同BrowserContext的兩個Browser實例將共享會話cookie和緩存文件。這個類我在同時啓動多個應用時用到,由於各個應用不能共用同一個數據文件目錄,因此,我用它爲應用分配不一樣的數據文件目錄。
BrowserPreferences:瀏覽器實例和全局庫首選項。設置瀏覽器的啓動參數等。通常在程序啓動時設置,也可使用Browser的setPreferences()方法設置
NetworkService:提供對網絡級功能的訪問。這個類頗有用,能夠用它實現對網絡請求的操做。我試了下,用了它後程序比較不穩定。
JS開頭的類:對JS的相關處理
com.teamdev.jxbrowser.chromium:監聽器,事件
com.teamdev.jxbrowser.chromium.dom:操做DOM對象的接口
com.teamdev.jxbrowser.chromium.swing:用於swing下的一些handler實現類,例如監聽網頁返回數據使用的是DefaultNetworkDelegate
官方Demo裏面已經有了各類騷操做的用法,這裏我只說些經常使用的和一些踩的坑。(官方Demo在哪?在百度雲盤裏)