JAVA浏览器控件JxBrowser v7.5全新上线!更轻松处理Dynamic Favicons

僤鯓⒐⒋嵵緔 提交于 2020-01-06 17:32:15

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

JxBrowser是将基于Chromium的浏览器与Java应用程序集成,以处理和显示HTML5、CSS3、JavaScript、Flash等。

近日,JxBrowser v7.5发布啦(点击下载),JAVA应用程序集成控件JxBrowser更新至7.5,允许将JavaScript对象转换为JSON字符串,扩展了允许获取当前加载的网页的图标的功能,修复多项Bug。以下是具体的更新内容。

新增功能

  • JSON格式:JxBrowser 7.5允许将JavaScript对象转换为JSON字符串,并从JSON字符串获取JavaScript对象。例如:
    Json json = frame.json();
    JsObject jsObject = json.parse("{\"one\":1,\"two\":2}");
    String jsObjectJson = json.stringify(jsObject);
  • 动态图标:此版本扩展了允许获取当前加载的网页的图标的功能,此功能在7.2中引入。由于某些网页会动态更改其图标,因此,决定启用JxBrowser,以便在加载的网页上的图标被更改时获得通知。方法如下:
    browser.on(FaviconChanged.class, event -> {
        Bitmap newFavicon = event.favicon();
    });
  • DOM API:在7.5中,使用JxBrowser 6中存在的以下方法扩展了DOM API:
    • Element.scrollIntoView(AlignTo alignTo)
    • Node.compareDocumentPosition(Node otherNode)
  • 渲染过程PID:此版本包含RenderProcessAPI和功能,允许获取Frame运行中的渲染过程的PID 。例如:
    frame.renderProcess().pid();
  • 导航:Navigation类现在具有browser()方法,该方法允许获取Navigation实例的Browser实例。
  • 导航事件:NavigationStarted和NavigationFinished事件具有isInMainFrame()方法,该方法指示是否在主框架中进行导航。
  • UrlRequest的IP地址:ReceiveHeadersCallback.Params类已使用ipAddress()方法扩展,该方法允许获取UrlRequest的IP地址。

改进

  • 使用DOM和JavaScript对象时,此版本的性能更好。
  • 所有敏感信息(例如键盘和鼠标输入,密码等)都不会打印在调试日志消息中。
  • DefaultStartDownloadCallback中显示的“文件保存”对话框现在对于Swing和JavaFX实现都是模态的。
  • Navigation.loadUrlAndWait()方法现在可以处理当前加载的网页内部的导航(例如,对内部#链接的导航)。
  • 适用于Windows 32位和64位的所有Chromium二进制文件均使用有效且经授权的TeamDev签名进行签名。

Bug修复

  • 修复IllegalStateException错误,当在硬件加速渲染模式下删除另一个BrowserView并关闭其Browser之后将BrowserView聚焦时。
  • 修复在非屏幕渲染模式下在加载的网页上进行主动渲染(例如播放HTML5视频)期间访问功能时,线程锁定。
  • 修复在Windows的屏幕外渲染模式下关闭“打印预览”对话框时,线程死锁问题。
  • 修复在Windows上以硬件加速渲染模式调整BrowserView大小时,由负宽度和高度引起的IllegalArgumentException错误。
  • 修复当关闭浏览器实例时,当它们的引擎仍处于活动状态时,内存泄漏。
  • 修复从容器中删除BrowserView组件时,发生内存泄漏。
  • 调整BrowserView大小时,macOS上的Chromium GPU进程中的内存泄漏。根本原因在于两种渲染模式下未发布的mach端口。万一所有可用端口都被占用,此泄漏可能会导致系统重新引导。
  • 修复调用XPathResult。 asSnapshotNodes()方法在应返回空集合时抛出XPathException错误。
  • 修复将当Document实例属于IFRAME时,Document.frame()方法返回错误的Frame。
  • 修复当HTTP标头在ReceiveHeadersCallback中被覆盖时,CanGetCookiesCallback回调未从Web服务器接收预期的cookie。
  • 修复将Swing BrowserView组件嵌入JTabbedPane容器时,Web内容显示在主屏幕的左上角。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!