首页 > 解决方案 > 如果另一个浏览器使用 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

解决方案


这是 JxBrowser 中的一个已知问题,将在未来版本之一中解决。不幸的是,当前版本没有解决方法。

UDP:该问题已在 JxBrowser 6.21 中修复。


推荐阅读