当前位置: 首页>前端>正文

java控制浏览器进行截图 java浏览器控件

  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崩溃。




https://www.xamrdz.com/web/2jf1933079.html

相关文章: