通过调试,我发现它可能与线程问题有关。当一个新浏览器即将打开时,OnAddNewContentsMessage和OnDidCreateScriptContextMessage会在不同的线程上同时启动。如果我让OnAddNewContentsMessage线程首先恢复,稍后将创建一个新的浏览器,OnDidCreateScriptContextMessage将正常被新浏览器捕获并创建一个jsContext,但如果我让OnDidCreateScriptContextMessage线程首先恢复,它将不会被浏览器捕获并且没有jsContext将被创建。在非调试模式下运行就像后者一样。使用null jsContext会使JsValue上的大多数操作抛出NullPointerException。
此问题仅发生在使用window.open(url)的其他浏览器打开的浏览器中。如果我刷新浏览器或直接访问网址(在地址栏中输入或粘贴网址),它可以正常工作。
=====更新============ 如果通过href链接打开新浏览器,它也可以正常工作。在这种情况下,OnAddNewContentsMessage和OnDidCreateScriptContextMessage按顺序启动
答案 0 :(得分:0)
这是JxBrowser中的一个已知问题,将在未来的某个版本中解决。不幸的是,当前版本没有解决方法。
UDP:问题已在JxBrowser 6.21中修复。