用于获取 JavaFX WebView 控制台事件的公共 API 是什么?

2023-12-13

我想记录 WebView 控制台事件。他们有时会发现所使用的底层浏览器中的怪癖,并可以帮助排除故障。

可以使用 Sun 实现类与 WebView 控制台交互:

import 

//...

WebConsoleListener.setDefaultListener((webView, message, lineNumber, sourceId) ->
         LOGGER.info(() -> "WebConsoleListener: " + message + "[" + webEngine.getLocation() + ":" + lineNumber + "]")
);

然而,com.sun.javafx.webkit.WebConsoleListener,是一个实现类,不是 JavaFX 公共 API 的一部分。

用于获取 JavaFX WebView 控制台事件的公共 API 是什么?

或者,获取这些事件进行故障排除的正确方法是什么?


您可以通过 Java™ 2 平台的核心日志记录工具启用浏览器控制台日志记录,方法是将其添加到logging.properties:

com.sun.webkit.WebPage.level = FINE

确保日志记录配置中存在 FINE 或更低级别的日志处理程序,否则日志将在记录之前被过滤。例子:

handlers = java.util.logging.ConsoleHandler
.level = INFO
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.XMLFormatter

com.sun.webkit.WebPage.level = FINE

以下是我如何得出这个结论的更深入的解释:

  1. WebConsoleListener#setDefaultListener(WebConsoleListener) calls WebPageClientImpl#setConsoleListener(WebConsoleListener).

  2. WebPageClientImpl#setConsoleListener(WebConsoleListener)将侦听器存储在其静态字段中控制台监听器.

  3. 控制台监听器仅与以下人员交互WebPageClientImpl#addMessageToConsole(字符串,int,字符串).

  4. WebPageClientImpl#addMessageToConsole(字符串,int,字符串)覆盖WebPageClient#addMessageToConsole(字符串,int,字符串).

  5. WebPageClient#addMessageToConsole(字符串,int,字符串) is 打电话给网页#fwkAddMessageToConsole(String,int,String).在撰写本文时,代码库中没有其他调用站点.

同样的方法记录控制台信息:

log.log(Level.FINE, "fwkAddMessageToConsole(): message = " + message
                + ", lineNumber = " + lineNumber + ", sourceId = " + sourceId);

这意味着您可以通过启用来获取所需的日志记录FINE登录中com.sun.webkit.WebPage限制对日志配置的实现级别依赖:

com.sun.webkit.WebPage.level = FINE

我找不到这方面的公共 API。

根据我对 OpenJDK JFX 存储库源的审查,没有可用的公共 API。

此解决方案仍然不理想,因为它依赖于私有实现类名,但该依赖项位于配置文件中,如果实现类更改或消失,影响是日志记录丢失,而不是可能致命的 NoClassDefFoundError 或 NoSuchMethodError。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于获取 JavaFX WebView 控制台事件的公共 API 是什么? 的相关文章

随机推荐

  • 有什么方法可以替换 Swift String 上的字符吗?

    我正在寻找一种方法来替换 Swift 中的字符String 示例 这是我的字符串 我想用 替换 以获得 This is my string 我怎样才能实现这个目标 这个答案已经针对 Swift 4 和 5 进行了更新 如果您仍在使用 Swi
  • 在 shell 脚本中的 grep 模式中使用文字 (*)

    我正在尝试评估grepshell 脚本内的表达式 并且 grep 使用字面星号 但该星号似乎被我的 bash 扩展 而不是保留字面星号 branch description git branch list vv grep 我能做什么来跑步g
  • 检测 标签无法加载视频

    我试图捕获以下嵌入标签的错误 在 iPad iOS 上 我尝试用以下方法捕获它 movie1 on onerror function alert error 我也尝试过onabort onstalled onended and onsusp
  • 如何使用 jQuery 或 Javascript 对角滚动

    是否有利用 javascript 或 jQuery 进行对角滚动的项目或插件 例如当您向下滚动内容时 它会被拉到浏览器的左上角 当您向上滚动时 您的内容将被拉到角落的右下角 我看到一些类似的项目 网站 他们在滚动时为元素设置动画 大多数使用
  • 以编程方式检索 Android API 版本

    有没有办法获取手机当前运行的API版本 如 Android 文档中所述 手机运行的 SDK 级别 整数 可用于 android os Build VERSION SDK INT 这个int对应的类在android os Build VERS
  • 如何从 Dask-Yarn 作业中捕获工人的日志?

    我尝试过使用以下内容 config dask distributed yaml and config dask yarn yaml logging file config path to config ini or logging vers
  • 使用 Axios 下载图像并将其转换为 base64

    我需要从远程服务器下载 jpg 图像并将其转换为 base64 格式 我使用 axios 作为我的 HTTP 客户端 我尝试向服务器发出 git 请求并检查response data但它似乎不是那样工作的 链接到 axios https g
  • HttpHandler 和 XML 文件

    我想拦截向服务器发出的任何 XML 文件请求 我认为使用 HttpHandler 可能可以实现 它已编码并且可以工作 仅在本地主机上 那么 为什么它只能在本地主机上运行 这是我的 web config
  • 有什么简单的方法可以解释为什么我不能执行 List Animals = new ArrayList() 吗? [复制]

    这个问题在这里已经有答案了 我知道为什么人们不应该这样做 但有没有办法向外行解释为什么这是不可能的 您可以轻松地向外行人解释这一点 Animal animal new Dog 狗是一种动物 但狗的列表并不是动物的列表 假设您创建了一个列表D
  • 在 msvc 中引用临时文件

    为什么它可以在 MS Visual C 上编译 struct myClass void func myClass arg void main func myClass works even though func only takes my
  • 如何检查模块是否已导入?

    如何检查我是否在代码中的某个位置导入了模块 if not has imported somemodule print you have not imported somemodule 我想检查是否已经导入了模块的原因是因为我有一个不想导入的
  • 使 Tkinter 窗口显示在任务栏中

    我希望我的程序显示在任务栏中 但仍然没有传统的 Windows 边框 我该怎么办 我知道self overrideredirect 1 但是这会将我的程序从任务栏中删除 这是针对 Windows 7 的 我并不认为这是 正确 的方法 但看看
  • 获取连接到 C# .NET WebAPI 应用程序的客户端的 IP 地址

    我试过 private const string HttpContext MS HttpContext private const string RemoteEndpointMessage System ServiceModel Chann
  • zend 与 select 的关系

    我是 zend 的新手 我被要求重新开发一个曾经用纯 PHP 编写的网站并将其放入 zend 框架中 我在数据库关系方面遇到很多麻烦 我似乎无法专心定义和查询关系 我想找一个类别 从该类别中 我希望能够找到与其关联的所有类别信息 并能够查询
  • 是否可以使用Python的requests库设置代理链?

    标准情况如下 公司的安全策略要求所有员工使用公司的代理服务器 需要授权 来获取任何 https 资源 为了通过 Python 解释器成功使用任何互联网连接 我必须手动 set HTTP PROXY http
  • 价格 woocommerce 中的小数分隔符

    Hi everyone I have this configuration in my woocommerce And in my product I have this 但当我显示价格时 它返回 4 95 而不是 4 95 我用这个来获取
  • 在 Hibernate 中混合 HQL 和 Criteria API

    是否可以混合使用 HQL 和 Criteria API 我有一个String包含 HQL 中的 where 条件和Criteria它已经建成并从其他地方获得 我想知道是否可以添加where条件String to Criteria add w
  • 使用 Spring CloudVault 时应用程序初始化时出现禁止错误

    使用 Spring Cloud HOXTON SR6 和 Spring boot 2 3 2 启动服务时 尝试访问 secret application 和 secret application profile 时出现 403 错误 这些路
  • 按自定义顺序对字符串数组进行排序

    我想按照我提到的顺序对字符串数组中的一组固定字符串进行排序 例如 文本文件 图像文件 音频文件 视频文件 应用程序文件 其他文件 示例1 如果我的字符串数组输入是这样的 inputval 0 Other files inputval 1 I
  • 用于获取 JavaFX WebView 控制台事件的公共 API 是什么?

    我想记录 WebView 控制台事件 他们有时会发现所使用的底层浏览器中的怪癖 并可以帮助排除故障 可以使用 Sun 实现类与 WebView 控制台交互 import WebConsoleListener setDefaultListen