jxbrowser - 如果另一个浏览器使用 window.open 打开浏览器,则浏览器中的 executeJavaScriptAndReturnValue 返回的 JsValue 的 jsContext 为空
问题描述
通过对其进行调试,我发现它可能与线程问题有关。当一个新的浏览器即将打开时,在不同的线程上同时启动一个 OnAddNewContentsMessage 和一个 OnDidCreateScriptContextMessage。如果我让 OnAddNewContentsMessage 线程首先恢复,稍后将创建一个新的浏览器,OnDidCreateScriptContextMessage 将被新浏览器捕获并创建一个 jsContext,但如果我让 OnDidCreateScriptContextMessage 线程首先恢复,它将不会被浏览器捕获并且没有 jsContext将被创建。在非调试模式下运行就像后者一样。拥有一个 null jsContext 会使 JsValue 上的大多数操作抛出 NullPointerException。
此问题仅发生在其他浏览器使用 window.open(url) 打开的浏览器中。如果我刷新浏览器或直接访问 url(在地址栏中键入或粘贴 url),它工作正常。
================更新============ 如果新浏览器通过href链接打开,它也可以正常工作。在这种情况下,依次启动 OnAddNewContentsMessage 和 OnDidCreateScriptContextMessage
解决方案
这是 JxBrowser 中的一个已知问题,将在未来版本之一中解决。不幸的是,当前版本没有解决方法。
UDP:该问题已在 JxBrowser 6.21 中修复。
推荐阅读
- bash - bash中grep中的引号和参数
- google-sheets - Google Sheets ArrayFormula Countifs 无法正常工作
- python - 使用从数据库中提取的数据在 dajngo 中生成报告
- c# - CS0120,试图通过 RadioButton 向 ListBox 发送数据
- javascript - 对于像 alert() 这样的 JavaScript 方法,您将 () 中的内容称为什么?
- node.js - 使用 Mongoose 连接到 MongoDB 不起作用
- javascript - 无论内容如何,如何固定引导开关按钮(复选框)?
- azure - 无法从工作流中检索 Azure 虚拟机状态
- android - Android Wear 数据层 API 只工作一次
- python - 列出切片和索引